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.