using resume_context = std::function< void(void)>;
An rvalue reference to an object of this type is provided by the write implementation
with the body of a message being sent.
If it is desired that the
suspend the write operation (for example, to wait until data is ready), it
can take ownership of the resume context using a move. Then, it returns
boost::indeterminate to indicate that the write
operation should suspend. Later, the calling code invokes the resume function
and the write operation continues from where it left off.