I'm not sure this method is useful as an abstraction.  The primary goal is to abstract insecure and timeout - wrapping the get/post/... methods seems like the wrong pattern.  Instead of wrapping the client with your own implementation, just return an http.Client from your NewClient method.  That makes the code more generally useful for composition elsewhere - code that expects an http.Client in other libraries will work.