class Excon::Socket

def read_block(max_length)

def read_block(max_length)
  @socket.read(max_length)
rescue OpenSSL::SSL::SSLError => error
  if error.message == 'read would block'
    if timeout_reached('read') 
      raise_timeout_error('read') 
    else
      retry
    end
  else
    raise(error)
  end
rescue Errno::EAGAIN, Errno::EWOULDBLOCK, IO::WaitReadable
  if @read_buffer.empty?
    if timeout_reached('read') 
      raise_timeout_error('read') 
    else
      retry
    end
  end
rescue EOFError
  @eof = true
end