Instead of chaining them, I'm using a try/catch inside of `MergeAndContinueIfNecessary` to handle synchronous exceptions. It seems slightly cleaner, but we could remove that and do more task chaining if you prefer that.