code: func Until(f func(), period time.Duration, stopCh <-chan struct{}) {
  	select {
  	case <-stopCh:
  		return
  	default:
  	}
  
  	for {
  		func() {
  			defer HandleCrash()
  			f()
  		}()
  		select {
  		case <-stopCh:
  			return
  		case <-time.After(period):
  		}
  	}
  }
docs: // Until loops until stop channel is closed, running f every period.
  // Catches any panics, and keeps going. f may not be invoked if
  // stop channel is already closed. Pass NeverStop to Until if you
  // don't want it stop.