This function can be simplified:

```
timer := time.AfterFunc(T.timeout, func() {
    T.httpTransport.CancelRequest(req)
})
defer timer.Stop()
return T.httpTransport.RoundTrip(req)
```