code: func (p *roundRobinResourcePool) Register(resourceLocation string) error {
  	if resourceLocation == "" {
  		return errors.New("Registering invalid resource location")
  	}
  
  	p.rwMutex.Lock()
  	defer p.rwMutex.Unlock()
  
  	if p.isLameDuck {
  		return errors.Newf(
  			"Cannot register %s to lame duck resource pool",
  			resourceLocation)
  	}
  
  	for _, locPool := range p.pools {
  		if locPool.ResourceLocation == resourceLocation {
  			return nil
  		}
  	}
  
  	pool := p.createPool(p.options)
  	if err := pool.Register(resourceLocation); err != nil {
  		return err
  	}
  
  	p.pools = append(
  		p.pools,
  		&ResourceLocationPool{
  			ResourceLocation: resourceLocation,
  			Pool:             pool,
  		})
  
  	shuffle(p.pools)
  	return nil
  }
docs: // See ResourcePool for documentation.