function timeout(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function a() { await timeout(3000); console.log('a') return 'a' } async function b() { await timeout(2000); console.log('b') return 'b' } // serie // async function run() { // await a() // await b() // } // parallel 1 // async function run() { // await Promise.all([a(), b()]) // } // parallel 2 async function run() { let fns = [a, b] await Promise.all(fns.map(fn => fn())).then(results => console.log('results', results)) } run()