code: func (c *Client) Query(query PQLQuery, options ...interface{}) (*QueryResponse, error) {
  	span := c.tracer.StartSpan("Client.Query")
  	defer span.Finish()
  
  	if err := query.Error(); err != nil {
  		return nil, err
  	}
  	queryOptions := &QueryOptions{}
  	err := queryOptions.addOptions(options...)
  	if err != nil {
  		return nil, err
  	}
  	serializedQuery := query.Serialize()
  	data, err := makeRequestData(serializedQuery.String(), queryOptions)
  	if err != nil {
  		return nil, errors.Wrap(err, "making request data")
  	}
  	useCoordinator := serializedQuery.HasWriteKeys()
  	path := fmt.Sprintf("/index/%s/query", query.Index().name)
  	_, buf, err := c.httpRequest("POST", path, data, defaultProtobufHeaders(), useCoordinator)
  	if err != nil {
  		return nil, err
  	}
  	iqr := &pbuf.QueryResponse{}
  	err = proto.Unmarshal(buf, iqr)
  	if err != nil {
  		return nil, err
  	}
  	queryResponse, err := newQueryResponseFromInternal(iqr)
  	if err != nil {
  		return nil, err
  	}
  	return queryResponse, nil
  }
docs: // Query runs the given query against the server with the given options.
  // Pass nil for default options.