diff --git a/middleware.go b/middleware.go index a662db85..54798710 100644 --- a/middleware.go +++ b/middleware.go @@ -195,15 +195,15 @@ func createHTTPRequest(c *Client, r *Request) (err error) { r.RawRequest.URL.Host = r.URL } - // Use context if it was specified - if r.ctx != nil { - r.RawRequest = r.RawRequest.WithContext(r.ctx) - } - // Enable trace if c.trace || r.trace { r.clientTrace = &clientTrace{} - r.RawRequest = r.RawRequest.WithContext(r.clientTrace.createContext()) + r.ctx = r.clientTrace.createContext(r.Context()) + } + + // Use context if it was specified + if r.ctx != nil { + r.RawRequest = r.RawRequest.WithContext(r.ctx) } // assign get body func for the underlying raw request instance diff --git a/trace.go b/trace.go index a3882382..862a3a06 100644 --- a/trace.go +++ b/trace.go @@ -77,9 +77,9 @@ type clientTrace struct { // Trace unexported methods //_______________________________________________________________________ -func (t *clientTrace) createContext() context.Context { +func (t *clientTrace) createContext(ctx context.Context) context.Context { return httptrace.WithClientTrace( - context.Background(), + ctx, &httptrace.ClientTrace{ GetConn: func(_ string) { t.getConn = time.Now()