code: func (p *Pool) acquireWriteLock(ctx context.Context) (bool, uint64) {
  	defer func() {
  		if r := recover(); r != nil {
  			log.LoggerWContext(ctx).Warn("Couldn't acquire lock for pfconfig pool")
  		}
  	}()
  
  	id, err := p.lock.Lock()
  	if err != nil {
  		panic("Couldn't acquire lock for pfconfig pool")
  	}
  
  	log.LoggerWContext(ctx).Debug("Acquired lock for pfconfig pool")
  	return err == nil, id
  }
docs: // Attempts to obtain a RW lock with the timeout set in RefreshLockTimeout
  // Even if the timeout gets reached, the lock will still be acquired when available but it will be immediately released
  // This is done by sending a message twice in the timeoutChan, one will be caught by the main waiting goroutine, the other one by the lock-waiting goroutine
  // When the lock-waiting goroutine is able to get something out of the timeoutChan channel, it knows it must release the lock immediately