Hello,
I wrote a blog post about how I think the HTTP client should be handled in reusable Go packages : https://0value.com/Let-the-Doer-Do-it
And tangentially related, a small and flexible package to handle HTTP retries at the transport (http.RoundTripper) level - though it is Go 1.6+ only (works with tip/beta/rc) because it uses the new Request.Cancel field to handle request cancellation, and doesn’t implement the (now deprecated) CancelRequest method : https://github.com/PuerkitoBio/rehttp
Please raise any issues on Github if it doesn’t work as advertised, and feel free to star if it is helpful.
Best,
Martin