public async Task DuplexStreamingServerHandler(IAsyncStreamReader <TRequest> requestStream, IServerStreamWriter <TResponse> responseStream, DuplexStreamingServerMethod <TRequest, TResponse> continuation)
        {
            try
            {
                var tracingRequestStream  = new TracingAsyncStreamReader <TRequest>(requestStream, _streamActions);
                var tracingResponseStream = new TracingServerStreamWriter <TResponse>(responseStream, _logger.Response);
                await continuation(tracingRequestStream, tracingResponseStream, _context).ConfigureAwait(false);

                _logger.FinishSuccess();
            }
            catch (Exception ex)
            {
                _logger.FinishException(ex);
                throw;
            }
        }
        public async Task ServerStreamingServerHandler(TRequest request, IServerStreamWriter <TResponse> responseStream, ServerStreamingServerMethod <TRequest, TResponse> continuation)
        {
            try
            {
                var tracingResponseStream = new TracingServerStreamWriter <TResponse>(responseStream, _logger.Response);
                _logger.Request(request);
                await continuation(request, tracingResponseStream, _context).ConfigureAwait(false);

                _logger.FinishSuccess();
            }
            catch (Exception ex)
            {
                _logger.FinishException(ex);
                throw;
            }
        }