let log = []; let resolve; const main = new Promise(r => { resolve = r }); (async function poll(count) { log.push(await Promise.resolve(count)) if (count < 3) setTimeout(poll, 10, count + 1); else resolve(); })(0) return main.then(() => { expect(log).toEqual([0, 1, 2, 3]); });