Max recursion async

Some updates the the max recursion logic.  I think this is probably cleaner.

We probably need to go through the unit tests very carefully to ensure they cover all of the needed scenarios.


@tannermiller-wf