I think you're right about raising an Abort. That's a good way to use our preexisting capability.

As far as where to do this, I'm having a hard time determining where to handle this stuff. If we leave it in `start()` then it will cause the currently executing function to stop and that could leave something in a bad state.

If I put some of this stuff in `__init()__` then I found that the `current_depth` will be incremented twice as it will happen upon first creation of the Async, and then when the Async is reconstituted within `process_async_task`.

The other option is to split all this logic up into much smaller pieces and spread it throughout async and processor (and potentially other places). I don't like that cause then it's harder to understand how all of it connects and interacts.

Any thoughts?