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