public async Task Send(T context, IPipe <T> next) { var consumerMetrics = new ConsumerMetrics(context); consumerMetrics.CountMessage(); try { using (consumerMetrics.ConsumeTimer()) { await next.Send(context).ConfigureAwait(false); } consumerMetrics.MeasureCriticalTime(); } catch (Exception) { consumerMetrics.CountError(); throw; } }