For such things like loops, filters, groups I use alot library - it designed for lazy iterations over arrays, but also supports Promise handlers. The first example would look like this: const names = [ 'saviomartin' , 'victoria-lo' ]; const users = await alot(names) .mapAsync( async name => { let { data: user } = await axios.get( `https://api.github.com/users/ ${name} ` ); return user; }) .toArrayAsync({ threads: 4 })