public async Task <IActionResult> UpdateOrder(Order order) { var expr = from updateOrder in RestaurantDomain.UpdateAndPersistOrder(order) let item = (updateOrder as OrderUpdated)?.Order select updateOrder; var result = await interpreter.Interpret(expr, Unit.Default); return(await result.MatchAsync <IActionResult>( async updated => { return (IActionResult)Ok(updated.Order); }, async notUpdated => { return BadRequest(); } )); }