code: func waitForStopOrTimeout(stopCh <-chan struct{}, timeout time.Duration) <-chan struct{} {
  	stopChWithTimeout := make(chan struct{})
  	go func() {
  		select {
  		case <-stopCh:
  		case <-time.After(timeout):
  		}
  		close(stopChWithTimeout)
  	}()
  	return stopChWithTimeout
  }
docs: // waitForStopOrTimeout returns a stop channel that closes when the provided stop channel closes or when the specified timeout is reached