code: func (t *instrumentedHTTPRoundTripper) RoundTrip(origReq *http.Request) (*http.Response, error) {
  	req := *origReq
  
  	// If a request body was provided, wrap it in a CountingReader so we can see
  	// how big it was after it's been sent.
  	var requestBodyReader *iotools.CountingReader
  	if req.Body != nil {
  		requestBodyReader = &iotools.CountingReader{Reader: req.Body}
  		req.Body = struct {
  			io.Reader
  			io.Closer
  		}{requestBodyReader, req.Body}
  	}
  
  	start := clock.Now(t.ctx)
  	resp, err := t.base.RoundTrip(&req)
  	duration := clock.Now(t.ctx).Sub(start)
  
  	var requestBytes int64
  	if requestBodyReader != nil {
  		requestBytes = requestBodyReader.Count
  	}
  
  	var code int
  	var responseBytes int64
  	if resp != nil {
  		code = resp.StatusCode
  		responseBytes = resp.ContentLength
  	}
  
  	UpdateHTTPMetrics(t.ctx, req.URL.Host, t.client, code, duration, requestBytes, responseBytes)
  
  	return resp, err
  }
docs: // RoundTrip implements http.RoundTripper.