def watch_socket_for_write(fd, low_water = nil, &callback)
      Watcher::SocketReadWrite.new(self, fd, :write, low_water, callback)
    end
def watch_socket_for_write(fd, low_water = nil, &callback)
      Watcher::SocketReadWrite.new(self, fd, :write, low_water, callback)
    end
Watches a socket and produces an event when it's possible to write.
 The {Event#data} field is set to the amount of space
 remaining in the write buffer.

 When an event is fired is subject to the
 subject to the SO_RCVLOWAT value of the socket buffer.
 This may be overridden via the `low_water` parameter,
 which sets a new low-water mark.

 If the write direction of the socket has shut down,
 then {Event#eof?} is set.
 It's possible for {Event#eof?} to be set while there's still
 data pending in the socket buffer.

 Note that this isn't compatible with JRuby
 unless a native-code file descriptor is passed in.
 This means the file descriptor must be returned by an FFI-wrapped C function.

 @param fd [Socket, Fixnum] A Ruby Socket, or the file descriptor
   for a native Socket.
 @param low_water [Fixnum] The low-water mark for new data.
 @yield [event] A block that will be run when it's possible
   to write to the specified socket.
 @yieldparam event [Event] The Event object containing information
   about the event that occurred.
 @return [Watcher] The Watcher for this event.
 @raise [SystemCallError] If something goes wrong when registering the Watcher.