The IsWritable property returns True if data can be written
          without blocking. For non-blocking connections, this property can be
          checked before the application attempts to send data to the server,
          preventing an error.
          If the IsWritable property returns False, this means that
          the application cannot write to the socket at that time. However, if
          the property returns True, this does not guarantee that you will be
          able to send data without an error. The next operation may result in
          an stErrorOperationWouldBlock or
          stErrorOperationInProgress error. The application must treat
          these errors as recoverable, and should be prepared to retry
          operations that result in them.