When the Cancel method is called, the blocking method will
not immediately fail. An internal flag is set which causes the
blocking operation to exit with an error. This means that the
application cannot cancel an operation and immediately perform some
other operation using the same client socket handle. Instead it must allow the calling stack to unwind,
returning back to the blocking operation before making any further
function calls.
Canceling a blocking operation for another client session may yield
unpredictable results. If you wish to terminate the client session, it
is preferable to use the Disconnect method rather than using
this method in conjunction with the Abort method.