It's ok to use both sync. and async. calls, but you should not call
boost::asio::async_read_until() and/or boost::asio::async_read() until
previous read is complete (for the same socket/buffer). Besides, pay
attention that reading "until" might read more data than you expect.