function defer() { let resolve; const promise = new Promise(r => { resolve = r; }); return { promise, resolve }; } const d = defer(); setTimeout(() => d.resolve(42), 10); console.log(await d.promise);