public async Task Dispatch(object triggerData, RecipeAction recipeAction) { foreach (var actionHandler in _handlers) { try { var result = await actionHandler.Execute(triggerData, recipeAction); if (result.Executed) { await _recipeManager.AddRecipeInvocation(new RecipeInvocation() { RecipeId = recipeAction.RecipeId, Timestamp = DateTime.Now, RecipeActionId = recipeAction.Id, ActionResult = result.Result, TriggerDataJson = JObject.FromObject(triggerData).ToString() }); } } catch (Exception e) { await _recipeManager.AddRecipeInvocation(new RecipeInvocation() { RecipeId = recipeAction.RecipeId, Timestamp = DateTime.Now, RecipeActionId = recipeAction.Id, ActionResult = e.Message, TriggerDataJson = JObject.FromObject(triggerData).ToString() }); } } }