async function walk (dir, visitor) { const filenames = await fs.readdirAsync(dir) await* filenames .map(filename => path.join(dir, filename)) .map(async filename => { const stat = await fs.statAsync(filename) if (stat.isDirectory()) { await walk(filename, visitor) } else { visitor(filename, stat) } }) }