code: func (c *Client) Query(ctx context.Context, q chronograf.Query) (chronograf.Response, error) {
  	resps := make(chan (result))
  	go func() {
  		resp, err := c.query(c.URL, q)
  		resps <- result{resp, err}
  	}()
  
  	select {
  	case resp := <-resps:
  		return resp.Response, resp.Err
  	case <-ctx.Done():
  		return nil, chronograf.ErrUpstreamTimeout
  	}
  }
docs: // Query issues a request to a configured InfluxDB instance for time series
  // information specified by query. Queries must be "fully-qualified," and
  // include both the database and retention policy. In-flight requests can be
  // cancelled using the provided context.