code: func (c *Cubic) CongestionWindowAfterPacketLoss(currentCongestionWindow protocol.ByteCount) protocol.ByteCount {
  	if currentCongestionWindow+protocol.DefaultTCPMSS < c.lastMaxCongestionWindow {
  		// We never reached the old max, so assume we are competing with another
  		// flow. Use our extra back off factor to allow the other flow to go up.
  		c.lastMaxCongestionWindow = protocol.ByteCount(c.betaLastMax() * float32(currentCongestionWindow))
  	} else {
  		c.lastMaxCongestionWindow = currentCongestionWindow
  	}
  	c.epoch = time.Time{} // Reset time.
  	return protocol.ByteCount(float32(currentCongestionWindow) * c.beta())
  }
docs: // CongestionWindowAfterPacketLoss computes a new congestion window to use after
  // a loss event. Returns the new congestion window in packets. The new
  // congestion window is a multiplicative decrease of our current window.