The point is that a properly designed API wouldn't require any amount of scaffolding. You'd go:
fs.statMany(filenames, function (stats) { ... });
or:
var statsPromise = fs.statMany(filenames);
And then in either case, you'd just use a for-loop or forEach or whatever your preference on the result. No thinking about how to preserve complex invariants or whatever is necessary.
Hell, with ES6 generator-y expressions you could make it even more succinct, something like:
var result;
fs.statMany(filenames, function (stats) { result = [... for x in stats]; });
No push nonsense, no nested if statements, no need to explicitly invoke async.parallel or whatever. Just clarity.
Sorry, I don't see no clarity there.
And how would that fix the fact that stat works in individual files?, and more importantly, how does a function like that handles error? Individual level, group level? It is confusing.
Hell, with ES6 generator-y expressions you could make it even more succinct, something like:
No push nonsense, no nested if statements, no need to explicitly invoke async.parallel or whatever. Just clarity. or: And then in either case, you'd just use a for-loop or forEach or whatever your preference on the result. No thinking about how to preserve complex invariants or whatever is necessary.