code: func (p *roundRobinResourcePool) Get(key string) (ManagedHandle, error) {
  
  	p.rwMutex.RLock()
  	defer p.rwMutex.RUnlock()
  
  	var err error
  	var handle ManagedHandle
  
  	for i := 0; i < len(p.pools); i++ {
  		next := int(atomic.AddInt64(p.counter, 1) % int64(len(p.pools)))
  		pool := p.pools[next].Pool
  
  		handle, err = pool.Get(key)
  		if err == nil {
  			return handle, nil
  		}
  	}
  
  	return nil, errors.Wrap(err, "No resource handle available")
  }
docs: // See ResourcePool for documentation.