code: func NewExecutor(config *client.Config, method string, url *url.URL) (StreamExecutor, error) {
  	tlsConfig, err := client.TLSConfigFor(config)
  	if err != nil {
  		return nil, err
  	}
  
  	upgradeRoundTripper := spdy.NewRoundTripper(tlsConfig)
  	wrapper, err := client.HTTPWrappersForConfig(config, upgradeRoundTripper)
  	if err != nil {
  		return nil, err
  	}
  
  	return &streamExecutor{
  		upgrader:  upgradeRoundTripper,
  		transport: wrapper,
  		method:    method,
  		url:       url,
  	}, nil
  }
docs: // NewExecutor connects to the provided server and upgrades the connection to
  // multiplexed bidirectional streams. The current implementation uses SPDY,
  // but this could be replaced with HTTP/2 once it's available, or something else.
  // TODO: the common code between this and portforward could be abstracted.