The OnDisconnect event is generated when the connection
is terminated by the remote host. This event is only triggered when
the Blocking property is set to False.
When the OnDisconnect event fires, it is possible that
there may still be buffered data available to read from the server.
Before disconnecting from the server, the application should
attempt to read any remaining data until the Read method
returns a value of zero, or returns an error indicating that the
operation would block.