code: func NewCachingConnector(sweepTime time.Duration, idleTime time.Duration) *CachingConnector {
  	cc := CachingConnector{
  		conns:         map[string]*cachedConn{},
  		index:         map[*grpc.ClientConn]*cachedConn{},
  		janitorDone:   make(chan bool, 1),
  		janitorClosed: make(chan bool, 1),
  		sweepTime:     sweepTime,
  		idleTime:      idleTime,
  	}
  
  	// cc.janitorClosed determines if a goroutine needs to be spun up.
  	// The janitor is able to shut itself down when it has no connection to monitor.
  	// When it shuts itself down, it pushes a value onto janitorClosed. We initialize
  	// the go chan with a bootstrap value so that cachingConnector spins up the
  	// goroutine on first usage.
  	cc.janitorClosed <- true
  	return &cc
  }
docs: // NewCachingConnector creates a GRPC connection cache. The cache is governed by
  // sweepTime and idleTime.