Setting the Blocking property determines if control actions
          complete synchronously or asynchronously. If set to True, then each
          control action, such as sending or receiving data, will return when
          the operation has completed or timed-out. If set to False, control
          actions will return immediately. If the operation would result in the
          control blocking, such as attempting to read data when none has been
          written, an error is generated. Events such as OnConnect,
          OnDisconnect, OnRead and OnWrite are only fired
          if the connection is non-blocking.