code: func (s *FluxQueryService) Query(ctx context.Context, r *query.Request) (flux.ResultIterator, error) {
  	u, err := newURL(s.Addr, fluxPath)
  	if err != nil {
  		return nil, err
  	}
  	params := url.Values{}
  	params.Set(OrgID, r.OrganizationID.String())
  	u.RawQuery = params.Encode()
  
  	preq := &query.ProxyRequest{
  		Request: *r,
  		Dialect: csv.DefaultDialect(),
  	}
  	qreq, err := QueryRequestFromProxyRequest(preq)
  	if err != nil {
  		return nil, err
  	}
  	var body bytes.Buffer
  	if err := json.NewEncoder(&body).Encode(qreq); err != nil {
  		return nil, err
  	}
  
  	hreq, err := http.NewRequest("POST", u.String(), &body)
  	if err != nil {
  		return nil, err
  	}
  
  	SetToken(s.Token, hreq)
  
  	hreq.Header.Set("Content-Type", "application/json")
  	hreq.Header.Set("Accept", "text/csv")
  	hreq = hreq.WithContext(ctx)
  
  	hc := newClient(u.Scheme, s.InsecureSkipVerify)
  	resp, err := hc.Do(hreq)
  	if err != nil {
  		return nil, err
  	}
  
  	if err := CheckError(resp, true); err != nil {
  		return nil, err
  	}
  
  	decoder := csv.NewMultiResultDecoder(csv.ResultDecoderConfig{})
  	return decoder.Decode(resp.Body)
  }
docs: // Query runs a flux query against a influx server and decodes the result