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 receive data when none has
been written), an error is generated. Control events such as
OnDisconnect, OnRead and OnWrite are only fired
if the socket is non-blocking.