code: func (bfr *BoundedFrequencyRunner) tryRun() {
  	bfr.mu.Lock()
  	defer bfr.mu.Unlock()
  
  	if bfr.limiter.TryAccept() {
  		// We're allowed to run the function right now.
  		bfr.fn()
  		bfr.lastRun = bfr.timer.Now()
  		bfr.timer.Stop()
  		bfr.timer.Reset(bfr.maxInterval)
  		klog.V(3).Infof("%s: ran, next possible in %v, periodic in %v", bfr.name, bfr.minInterval, bfr.maxInterval)
  		return
  	}
  
  	// It can't run right now, figure out when it can run next.
  
  	elapsed := bfr.timer.Since(bfr.lastRun)    // how long since last run
  	nextPossible := bfr.minInterval - elapsed  // time to next possible run
  	nextScheduled := bfr.maxInterval - elapsed // time to next periodic run
  	klog.V(4).Infof("%s: %v since last run, possible in %v, scheduled in %v", bfr.name, elapsed, nextPossible, nextScheduled)
  
  	if nextPossible < nextScheduled {
  		// Set the timer for ASAP, but don't drain here.  Assuming Loop is running,
  		// it might get a delivery in the mean time, but that is OK.
  		bfr.timer.Stop()
  		bfr.timer.Reset(nextPossible)
  		klog.V(3).Infof("%s: throttled, scheduling run in %v", bfr.name, nextPossible)
  	}
  }
docs: // assumes the lock is not held