code: func (d *DNSProvider) makeRequest(method, uri string, body io.Reader) (json.RawMessage, error) {
  	url := d.cloudDNSEndpoint + uri
  
  	req, err := http.NewRequest(method, url, body)
  	if err != nil {
  		return nil, err
  	}
  
  	req.Header.Set("X-Auth-Token", d.token)
  	req.Header.Set("Content-Type", "application/json")
  
  	resp, err := d.config.HTTPClient.Do(req)
  	if err != nil {
  		return nil, fmt.Errorf("error querying DNS API: %v", err)
  	}
  
  	defer resp.Body.Close()
  
  	if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusAccepted {
  		return nil, fmt.Errorf("request failed for %s %s. Response code: %d", method, url, resp.StatusCode)
  	}
  
  	var r json.RawMessage
  	err = json.NewDecoder(resp.Body).Decode(&r)
  	if err != nil {
  		return nil, fmt.Errorf("JSON decode failed for %s %s. Response code: %d", method, url, resp.StatusCode)
  	}
  
  	return r, nil
  }
docs: // makeRequest is a wrapper function used for making DNS API requests