private async Task RunResponder(IResponder responder, IMessage message, CancellationToken token) { var stopwatch = new Stopwatch(); logger.LogTrace("Running responder {0} for message {1}", responder.GetType().Name, message); stopwatch.Start(); try { await responder.ProcessMessage(message, token); } catch (Exception e) { logger.LogError(e, "Got exception from responder caused by message \"{0}\"", message); } logger.LogTrace("Completed responder {0} in {1} for message: {2}", responder.GetType().Name, stopwatch.Elapsed, message); }