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