class HTTP::Timeout::PerOperation

def write(data)

Write data to the socket
def write(data)
  timeout = false
  loop do
    result = @socket.write_nonblock(data, :exception => false)
    return result unless result == :wait_writable
    raise TimeoutError, "Write timed out after #{@write_timeout} seconds" if timeout
    timeout = true unless @socket.to_io.wait_writable(@write_timeout)
  end
end