code: func newAsyncIDTokenVerifier(ctx context.Context, c *oidc.Config, iss string) *asyncIDTokenVerifier {
  	t := &asyncIDTokenVerifier{}
  
  	sync := make(chan struct{})
  	// Polls indefinitely in an attempt to initialize the distributed claims
  	// verifier, or until context canceled.
  	initFn := func() (done bool, err error) {
  		klog.V(4).Infof("oidc authenticator: attempting init: iss=%v", iss)
  		v, err := initVerifier(ctx, c, iss)
  		if err != nil {
  			klog.Errorf("oidc authenticator: async token verifier for issuer: %q: %v", iss, err)
  			return false, nil
  		}
  		t.m.Lock()
  		defer t.m.Unlock()
  		t.v = v
  		close(sync)
  		return true, nil
  	}
  
  	go func() {
  		if done, _ := initFn(); !done {
  			go wait.PollUntil(time.Second*10, initFn, ctx.Done())
  		}
  	}()
  
  	if synchronizeTokenIDVerifierForTest {
  		<-sync
  	}
  
  	return t
  }
docs: // newAsyncIDTokenVerifier creates a new asynchronous token verifier.  The
  // verifier is available immediately, but may remain uninitialized for some time
  // after creation.