Rewrite and async/await

by ronilan

JavaScript

function codeToFunction(code) {
  const AsyncFunction = Object.getPrototypeOf(async () => {}).constructor;
  let af = new AsyncFunction(code);
  return af;
}

function exec(code) {
  let af = codeToFunction(code);
  return af.apply();
}

function event(code) {
  return exec(code)
}

let e1 = event(`return 42`);
let e2 = event(`await new Promise(resolve => setTimeout(resolve, 1000)); return 52;`)

e1.then((result) => {
  console.log(result)
})

e2.then((result) => {
  console.log(result)
})

console.log(e1, e2);

setTimeout(() => {
  console.log(e1, e2)
}, 2000)