code: func (p *Pool) ReadLock(ctx context.Context) (uint64, error) {
  	return p.lock.RLock()
  }
docs: // Acquire a read lock on the pool
  // All the goroutines that use resources from the pool should call this and release it when they are done
  // Long running processes should aim to retain this lock for the smallest time possible since Refresh will need a RW lock to refresh the resources
  // This lock can be acquired multiple times given its a read lock