@httpclient is private - callers call Client to invoke methods, and each invocation resets the httpclient IF we cannot reuse it.  So can't be in use anywhere else.

The method is a bit smarter than the dumb "lazy init" to allow a client to pass a different value for timeout, etc on a particular call, even if it means we drop the active pipeline to the server.