code: func (tc *TokenCleaner) processNextWorkItem() bool {
  	key, quit := tc.queue.Get()
  	if quit {
  		return false
  	}
  	defer tc.queue.Done(key)
  
  	if err := tc.syncFunc(key.(string)); err != nil {
  		tc.queue.AddRateLimited(key)
  		utilruntime.HandleError(fmt.Errorf("Sync %v failed with : %v", key, err))
  		return true
  	}
  
  	tc.queue.Forget(key)
  	return true
  }
docs: // processNextWorkItem deals with one key off the queue.  It returns false when it's time to quit.