обратите внимание, что в setTimeout нужно передавать resolve, а не результат её вызова
const promiseList = [
new Promise(resolve => setTimeout(resolve, 200, 15)),
new Promise(resolve => setTimeout(resolve, 600, 17)),
new Promise(resolve => setTimeout(resolve, 500, 42))
];
async function* promiseGenerator(arrPromise) {
const result = [];
const push = (val) => result.push(val);
const promises = arrPromise.map((promise) => promise.then(push));
await Promise.all(promises);
for (let i = result.length - 1; i >= 0; --i) {
yield result[i];
}
}