Currently, instances of Session do not keep track of operations scheduled on their underlying sockets. As a result, they cannot await completion or ask for interruption of these operations.
This ticket should provide the means to account for in-flight operations and demand/await their interruption as part of ending the session.
As an example, this ticket should provide the means to account for and cancel an asynchronous read operation blocked in the following continuation (e.g., using a fail-point):
This ticket should provide unit-tests that mimic hangs in the underlying networking layer, and verify the cancelation behavior (i.e., Session::cancelAsyncOperations()) works in presence and absence of networking batons. Furthermore, since the baton uses the reactor thread to poll on the sessions, we should ensure the baton is not running anything on behalf of the session after the session is canceled.