code: func (s *Server) peerQuerySpeculative(ctx context.Context, data cluster.Traceable, name, path string) (map[string]PeerResponse, error) {
  	result := make(map[string]PeerResponse)
  
  	responseChan, errorChan := s.peerQuerySpeculativeChan(ctx, data, name, path)
  
  	for resp := range responseChan {
  		result[resp.peer.GetName()] = resp
  	}
  
  	err := <-errorChan
  	return result, err
  }
docs: // peerQuerySpeculative takes a request and the path to request it on, then fans it out
  // across the cluster. If any peer fails requests to other peers are aborted. If enough
  // peers have been heard from (based on speculation-threshold configuration), and we
  // are missing the others, try to speculatively query each other member of each shard group.
  // ctx:          request context
  // data:         request to be submitted
  // name:         name to be used in logging & tracing
  // path:         path to request on