public async Task <LockResponse> ProcessAsync(LockRequest request, CancellationToken cancellationToken = default)
        {
            try
            {
                long token;
                var  requestedDuration = request.Duration.ToTimeSpan();
                if (requestedDuration.Ticks == 0)
                {
                    _logger.DebugEvent("ProcessAsync.ReleaseAsync", new { Request = request });
                    token = await _store.ReleaseAsync(request.Key, request.Token, cancellationToken).ConfigureAwait(false);
                }
                else if (request.Token >= 0)
                {
                    _logger.DebugEvent("ProcessAsync.UpdateDurationAsync", new { Request = request });
                    token = await _store.UpdateAsync(request.Key, request.Token, requestedDuration, cancellationToken).ConfigureAwait(false);
                }
                else
                {
                    _logger.DebugEvent("ProcessAsync.AcquireAsync", new { Request = request });
                    token = await _store.AcquireAsync(request.Key, requestedDuration, cancellationToken).ConfigureAwait(false);
                }

                return(new LockResponse()
                {
                    Key = request.Key,
                    Token = token,
                });
            }
            catch (Exception ex)
            {
                _logger.ErrorEvent(ex, "ProcessAsync.Error", new { Request = request, ErrorMsg = ex.Message, });
                return(new LockResponse()
                {
                    Key = request.Key,
                    Token = -1,
                });
            }
        }