Runs all the functions in an object recursively, at most concurrency of them
at a time. Each function is replaced by the value it returns, awaited if it is
a promise. Because the tasks are only called here, the concurrency applies to
the work itself, unlike recursiveResolve, which receives promises that are
already running.
The changes are done in-place ! If a task fails, the returned promise rejects
with that error and no further task is started.
Runs all the functions in an object recursively, at most
concurrencyof them at a time. Each function is replaced by the value it returns, awaited if it is a promise. Because the tasks are only called here, the concurrency applies to the work itself, unlikerecursiveResolve, which receives promises that are already running. The changes are done in-place ! If a task fails, the returned promise rejects with that error and no further task is started.