code: func (l Limiter) Acquire(ctx context.Context) bool {
  
  	// if the ctx is already canceled return straight away.
  	select {
  	case <-ctx.Done():
  		return false
  	default:
  	}
  
  	select {
  	case <-ctx.Done():
  		return false
  	case l <- struct{}{}:
  	}
  	return true
  }
docs: // Acquire returns when a slot is available.
  // If the limit is reached it will block until
  // another thread calls Release() or the context is done.
  // In the latter case we return false.