code: func (s *FluxService) Query(ctx context.Context, w io.Writer, r *query.ProxyRequest) (int64, error) {
  	u, err := newURL(s.Addr, fluxPath)
  	if err != nil {
  		return 0, err
  	}
  
  	qreq, err := QueryRequestFromProxyRequest(r)
  	if err != nil {
  		return 0, err
  	}
  	var body bytes.Buffer
  	if err := json.NewEncoder(&body).Encode(qreq); err != nil {
  		return 0, err
  	}
  
  	hreq, err := http.NewRequest("POST", u.String(), &body)
  	if err != nil {
  		return 0, 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 0, err
  	}
  	defer resp.Body.Close()
  
  	if err := CheckError(resp, true); err != nil {
  		return 0, err
  	}
  	if err := CheckError(resp); err != nil {
  		return 0, err
  	}
  	return io.Copy(w, resp.Body)
  }
docs: // Query runs a flux query against a influx server and sends the results to the io.Writer.
  // Will use the token from the context over the token within the service struct.