Thanks Igor,Am I wrong in my interpretation, because I see the user effectively doing: async_write async_write async_write io_service.run() async_write async_write io_service.run() The first call to io_service.run() correctly calls my message handler 3 times, for the 3 writes. The second call to io_service.run() I expect to see the handler called twice, but it is not called at all!io_service.reset() should be called before the second run(): http://www.boost.org/doc/libs/1_38_0/doc/html/boost_asio/reference/io_service/reset.html