code: func (h *httpStreamHandler) run() {
  	klog.V(5).Infof("(conn=%p) waiting for port forward streams", h.conn)
  Loop:
  	for {
  		select {
  		case <-h.conn.CloseChan():
  			klog.V(5).Infof("(conn=%p) upgraded connection closed", h.conn)
  			break Loop
  		case stream := <-h.streamChan:
  			requestID := h.requestID(stream)
  			streamType := stream.Headers().Get(api.StreamType)
  			klog.V(5).Infof("(conn=%p, request=%s) received new stream of type %s", h.conn, requestID, streamType)
  
  			p, created := h.getStreamPair(requestID)
  			if created {
  				go h.monitorStreamPair(p, time.After(h.streamCreationTimeout))
  			}
  			if complete, err := p.add(stream); err != nil {
  				msg := fmt.Sprintf("error processing stream for request %s: %v", requestID, err)
  				utilruntime.HandleError(errors.New(msg))
  				p.printError(msg)
  			} else if complete {
  				go h.portForward(p)
  			}
  		}
  	}
  }
docs: // run is the main loop for the httpStreamHandler. It processes new
  // streams, invoking portForward for each complete stream pair. The loop exits
  // when the httpstream.Connection is closed.