Вариант @ DanRoss's:
async function filterNums(arr) {
return await arr.reduce(async (res, val) => {
res = await res
if (await filter(val)) {
res.push(val)
}
return res
}, Promise.resolve([]))
}
Обратите внимание, что если (как в текущем случае) вам не нужно беспокоиться о том, что filter () имеет побочные эффекты, которые необходимо сериализовать, вы можете также делают:
async function filterNums(arr) {
return await arr.reduce(async (res, val) => {
if (await filter(val)) {
(await res).push(val)
}
return res
}, Promise.resolve([]))
}