private async Task LogRequestResponseAndTriggerNext(HttpContext context)
        {
            var request = context.Request;
            var reqRes  = await ExtractRequestAsync(request);

            await _requestResponseCoupleService.Create(reqRes);

            var response = context.Response;

            using (var resMS = new MemoryStream())
            {
                var originalResponseBodyReference = response.Body;
                response.Body = resMS;

                await _next(context);

                response.Body.Seek(0, SeekOrigin.Begin);
                var responseBody = await new StreamReader(response.Body).ReadToEndAsync();
                response.Body.Seek(0, SeekOrigin.Begin);
                reqRes.Response = new Response
                {
                    StatusCode = response.StatusCode,
                    Body       = responseBody
                };
                await resMS.CopyToAsync(originalResponseBodyReference);
            }

            await _requestResponseCoupleService.Update(reqRes);

            _notificationPublisher.ToClients(TethysNotificationKeys.NewRequestResponseCouple, reqRes);
        }