class Excon::Socket

def readline

def readline
  return legacy_readline if RUBY_VERSION.to_f <= 1.8_7
  buffer = ''
  begin
    buffer << @socket.read_nonblock(1) while buffer[-1] != "\n"
    buffer
  rescue Errno::EAGAIN, Errno::EWOULDBLOCK, IO::WaitReadable 
    if timeout_reached('read')
      raise_timeout_error('read')
    else
      retry
    end
  rescue OpenSSL::SSL::SSLError => e
    if e.message == 'read would block'
      if timeout_reached('read')
        raise_timeout_error('read')
      else
        retry
      end
    else
      raise(error)
    end
  end
end