class Excon::Socket

def readline

def readline
  if @nonblock
    result = String.new
    block = consume_read_buffer
    loop do
      idx = block.index("\n")
      if idx.nil?
        result << block
      else
        result << block[0..idx]
        rewind_read_buffer(block, idx)
        break
      end
      block = read_nonblock(@data[:chunk_size]) || raise(EOFError)
    end
    result
  else # nonblock/legacy
    begin
      Timeout.timeout(@data[:read_timeout]) do
        @socket.readline
      end
    rescue Timeout::Error
      raise Excon::Errors::Timeout.new('read timeout reached')
    end
  end
end