In a previous article, I talked about error handling in Swift using throw. But what happens when you deal with asynchronous workflows, where throw can’t really fit? What’s wrong with throw and async? As a reminder, a function which can fail can use throw in the following way: // Define an error type and a throwing function enum ComputationError: ErrorType { case DivisionByZero } func inverse(x: Fl