code: func WithTracing(h Handler) Handler {
  	return Handler{
  		Name: "TracedSender",
  		Fn: func(r *Request) {
  			span, ctx := opentracing.StartSpanFromContext(r.HTTPRequest.Context(), "client.request")
  			opentracing.GlobalTracer().Inject(
  				span.Context(),
  				opentracing.HTTPHeaders,
  				opentracing.HTTPHeadersCarrier(r.HTTPRequest.Header),
  			)
  			defer span.Finish()
  			r.HTTPRequest = r.HTTPRequest.WithContext(ctx)
  
  			span.SetTag(ext.ResourceName, r.ClientInfo.ServiceName)
  			span.SetTag("http.method", r.HTTPRequest.Method)
  			span.SetTag("http.url", r.HTTPRequest.URL.Hostname()+r.HTTPRequest.URL.EscapedPath())
  			span.SetTag("out.host", r.HTTPRequest.URL.Hostname())
  			span.SetTag("out.port", r.HTTPRequest.URL.Port())
  
  			h.Fn(r)
  
  			if r.HTTPResponse != nil {
  				span.SetTag("http.status_code", r.HTTPResponse.StatusCode)
  			}
  
  			if r.Error != nil {
  				span.SetTag(ext.Error, r.Error)
  			}
  		},
  	}
  }
docs: // WithTracing returns a Send Handler that wraps another Send Handler in a trace
  // span.