@toolness let me know if this function is confusing. It's on the edge of clever, I think – higher order functions and mutual recursion, oh my! – but it seemed like the best way to handle this problem such that A) everything gets done strictly in series and B) the completion state of a task is never left in a `started` state at the end of processing.