def process(keys, &block)
      return {} if keys.empty?

      @ring.lock do
        servers = setup_requests(keys)
        start_time = Time.now
        servers = fetch_responses(servers, start_time, @ring.socket_timeout, &block) until servers.empty?
      end
    rescue NetworkError => e
      Dalli.logger.debug { e.inspect }
      Dalli.logger.debug { 'retrying pipelined gets because of timeout' }
      retry
    end
#
Yields, one at a time, keys and their values+attributes.