The OnDisconnect event is generated when the connection is
          terminated by the server. 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.