code: func NewConnectionFlowController(
  	receiveWindow protocol.ByteCount,
  	maxReceiveWindow protocol.ByteCount,
  	queueWindowUpdate func(),
  	rttStats *congestion.RTTStats,
  	logger utils.Logger,
  ) ConnectionFlowController {
  	return &connectionFlowController{
  		baseFlowController: baseFlowController{
  			rttStats:             rttStats,
  			receiveWindow:        receiveWindow,
  			receiveWindowSize:    receiveWindow,
  			maxReceiveWindowSize: maxReceiveWindow,
  			logger:               logger,
  		},
  		queueWindowUpdate: queueWindowUpdate,
  	}
  }
docs: // NewConnectionFlowController gets a new flow controller for the connection
  // It is created before we receive the peer's transport paramenters, thus it starts with a sendWindow of 0.