use step to group multiple asyncs

after getting a good debug dump of a failed run, it became clear that the simple `jobs` counter wasn't good enough. using a tried and tested way of making sure all of these async functions are completed before marking the task as complete