This recursive loop seems very strange and unintuitive. It seems like it's doing an asynchronous for-each. Rewrite with quiver.async's forEachAsync()? That has the added benefit of being able to do more than one fetch in parallel, (though you will need to use the async File functions for that to do any good.