code: func (e *quotaEvaluator) checkAttributes(ns string, admissionAttributes []*admissionWaiter) {
  	// notify all on exit
  	defer func() {
  		for _, admissionAttribute := range admissionAttributes {
  			close(admissionAttribute.finished)
  		}
  	}()
  
  	quotas, err := e.quotaAccessor.GetQuotas(ns)
  	if err != nil {
  		for _, admissionAttribute := range admissionAttributes {
  			admissionAttribute.result = err
  		}
  		return
  	}
  	// if limited resources are disabled, we can just return safely when there are no quotas.
  	limitedResourcesDisabled := len(e.config.LimitedResources) == 0
  	if len(quotas) == 0 && limitedResourcesDisabled {
  		for _, admissionAttribute := range admissionAttributes {
  			admissionAttribute.result = nil
  		}
  		return
  	}
  
  	if e.lockAcquisitionFunc != nil {
  		releaseLocks := e.lockAcquisitionFunc(quotas)
  		defer releaseLocks()
  	}
  
  	e.checkQuotas(quotas, admissionAttributes, 3)
  }
docs: // checkAttributes iterates evaluates all the waiting admissionAttributes.  It will always notify all waiters
  // before returning.  The default is to deny.