is close but not quite correct as there is no recursion here. The documentation explains this nicely:
Regardless of whether the asynchronous operation completes immediately
or not, the handler will not be invoked from within this function.
Invocation of the handler will be performed in a manner equivalent to
Added emphasis is mine. Instead of recursion, It is better to think of these concepts as chaining since one operation such as
async_write() is initiated in the handler of another, such as
async_read(). The exact specifics depend on the protocol in use.
If you want the server to send the string 0123456789 to the client, fill your buffer before invoking
Read more here: Source link