Looking at some of the examples, it looks like polling would be done by starting another async_read from the handler supplied to the async_read.
 
Yes, exactly.
In general, you can mix sync/async i/o, but note that you should not start a read operation before the previous read  (on the same socket) is completed (the same about write).