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