code: func (az *Cloud) CreateOrUpdateSGWithRetry(service *v1.Service, sg network.SecurityGroup) error {
  	return wait.ExponentialBackoff(az.requestBackoff(), func() (bool, error) {
  		ctx, cancel := getContextWithCancel()
  		defer cancel()
  
  		resp, err := az.SecurityGroupsClient.CreateOrUpdate(ctx, az.ResourceGroup, *sg.Name, sg)
  		klog.V(10).Infof("SecurityGroupsClient.CreateOrUpdate(%s): end", *sg.Name)
  		done, err := az.processHTTPRetryResponse(service, "CreateOrUpdateSecurityGroup", resp, err)
  		if done && err == nil {
  			// Invalidate the cache right after updating
  			az.nsgCache.Delete(*sg.Name)
  		}
  		return done, err
  	})
  }
docs: // CreateOrUpdateSGWithRetry invokes az.SecurityGroupsClient.CreateOrUpdate with exponential backoff retry