/// <summary>
        /// Acquire the singleton lock. If the lock cannot be acquired within the configured timeout,
        /// an exception will be thrown.
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task AcquireAsync(CancellationToken cancellationToken)
        {
            AcquireStartTime = DateTime.UtcNow;

            _lockHandle = await _singletonManager.LockAsync(_lockId, _functionInstanceId, _attribute, cancellationToken);

            AcquireEndTime = DateTime.UtcNow;
            IsHeld         = true;
        }