code: func (e *streamExecutor) Stream(options StreamOptions) error {
  	req, err := http.NewRequest(e.method, e.url.String(), nil)
  	if err != nil {
  		return fmt.Errorf("error creating request: %v", err)
  	}
  
  	conn, protocol, err := spdy.Negotiate(
  		e.upgrader,
  		&http.Client{Transport: e.transport},
  		req,
  		e.protocols...,
  	)
  	if err != nil {
  		return err
  	}
  	defer conn.Close()
  
  	var streamer streamProtocolHandler
  
  	switch protocol {
  	case remotecommand.StreamProtocolV4Name:
  		streamer = newStreamProtocolV4(options)
  	case remotecommand.StreamProtocolV3Name:
  		streamer = newStreamProtocolV3(options)
  	case remotecommand.StreamProtocolV2Name:
  		streamer = newStreamProtocolV2(options)
  	case "":
  		klog.V(4).Infof("The server did not negotiate a streaming protocol version. Falling back to %s", remotecommand.StreamProtocolV1Name)
  		fallthrough
  	case remotecommand.StreamProtocolV1Name:
  		streamer = newStreamProtocolV1(options)
  	}
  
  	return streamer.stream(conn)
  }
docs: // Stream opens a protocol streamer to the server and streams until a client closes
  // the connection or the server disconnects.