class HTTP::Request::Writer

def send_request

def send_request
  headers = join_headers
  # It's important to send the request in a single write call when
  # possible in order to play nicely with Nagle's algorithm. Making
  # two writes in a row triggers a pathological case where Nagle is
  # expecting a third write that never happens.
  case @body
  when NilClass
    write(headers)
  when String
    write(headers << @body)
  when Enumerable
    write(headers)
    @body.each do |chunk|
      write(chunk.bytesize.to_s(16) << CRLF << chunk << CRLF)
    end
    write(CHUNKED_END)
  else fail TypeError, "invalid body type: #{@body.class}"
  end
end