code: func (s *Service) HTTPClient() *http.Client {
  	t := &http.Transport{
  		// Sadly we can't use DialContext hook since that is expected to return a
  		// plain TCP connection and http.Client tries to start a TLS handshake over
  		// it. We need to control the handshake to be able to do our validation.
  		// So we have to use the older DialTLS which means no context/timeout
  		// support.
  		//
  		// TODO(banks): figure out how users can configure a timeout when using
  		// this and/or compatibility with http.Request.WithContext.
  		DialTLS: s.HTTPDialTLS,
  	}
  	// Need to manually re-enable http2 support since we set custom DialTLS.
  	// See https://golang.org/src/net/http/transport.go?s=8692:9036#L228
  	http2.ConfigureTransport(t)
  	return &http.Client{
  		Transport: t,
  	}
  }
docs: // HTTPClient returns an *http.Client configured to dial remote Consul Connect
  // HTTP services. The client will return an error if attempting to make requests
  // to a non HTTPS hostname. It resolves the domain of the request with the same
  // syntax as Consul DNS queries although it performs discovery directly via the
  // API rather than just relying on Consul DNS. Hostnames that are not valid
  // Consul DNS queries will fail.