I can now see that this is being called recursively. This feels a bit more complex than it really should be. We have plenty of examples where we have to run over a number of items and do them asynchronously.