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