1. Fixed receiver.
   1. Receiver must use strand to garuntee that handler is executed in same
      thread that ios.run() called from.
   2. ios.run() was exiting before async_read_some was called because there was
      no work left. Added a loop to reset ios, then run. This is probably not
      a good way to do this, but it works for now.