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.