code: func (c *Client) Tunnel() *Client {
  	tunnel := c.NewServiceClient(c.u.Path, c.Namespace)
  	t := tunnel.Client.Transport.(*http.Transport)
  	// Proxy to vCenter host on port 80
  	host := tunnel.u.Hostname()
  	// Should be no reason to change the default port other than testing
  	key := "GOVMOMI_TUNNEL_PROXY_PORT"
  
  	port := tunnel.URL().Query().Get(key)
  	if port == "" {
  		port = os.Getenv(key)
  	}
  
  	if port != "" {
  		host += ":" + port
  	}
  
  	t.Proxy = http.ProxyURL(&url.URL{
  		Scheme: "http",
  		Host:   host,
  	})
  
  	// Rewrite url Host to use the sdk tunnel, required for a certificate request.
  	tunnel.u.Host = sdkTunnel
  	return tunnel
  }
docs: // Tunnel returns a Client configured to proxy requests through vCenter's http port 80,
  // to the SDK tunnel virtual host.  Use of the SDK tunnel is required by LoginExtensionByCertificate()
  // and optional for other methods.