public async Task HandleAsync(DbSms sms, CancellationToken token = default) { try { await _current.HandleAsync(sms, token); if (_successor != null) { await _successor.HandleAsync(sms, token); } } catch (Exception e) { if (_fallback == null) { _logger.Error(e, "Handler failed with exception. No fallback scenario."); throw; } _logger.Warning(e, "Handler failed with exception. Fallback scenario start."); await _fallback.HandleAsync(sms, token); } }