public async Task <TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate <TResponse> next)
        {
            _timer.Start();
            var response = await next();

            _timer.Stop();

            var elapsedMilliseconds = _timer.ElapsedMilliseconds;

            if (elapsedMilliseconds <= 500)
            {
                return(response);
            }

            var user = await _loggedInUserProvider.GetUserIdentifierAsync();

            var model = JsonConvert.SerializeObject(request, new JsonSerializerSettings
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                DateTimeZoneHandling  = DateTimeZoneHandling.Utc
            });

            _logger.LogWarning($"Long Running Request: [{typeof(TRequest).Name}] ({elapsedMilliseconds} milliseconds) for user [{user ?? "Anonymous"}] with model: {model};");

            return(response);
        }
        public async Task Process(TRequest request, CancellationToken cancellationToken)
        {
            var user = await _loggedInUserProvider.GetUserIdentifierAsync();

            var model = JsonConvert.SerializeObject(request, new JsonSerializerSettings
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                DateTimeZoneHandling  = DateTimeZoneHandling.Utc
            });

            _logger.LogInformation($"Proccessing Request: [{typeof(TRequest).Name}] for user [{user ?? "Anonymous"}] with model: {model};");
        }