const main = (fn) => { return fn(); }; const result = main(() => { return 42; }); console.log(result); // 42 const resutl2 = main(async () => { return 'hello'; }); console.log(resutl2); // Promise { 'hello' } const fn = async () => { const result3 = await main(async () => { // return Promise.resolve('world'); return new Promise((resolve) => { setTimeout(() => { resolve('world'); }, 1000); }); }); console.log(result3); // world }; fn(); const fn2 = (t) => { if (t === 1) return 'hello'; if (t === 2) return Promise.resolve('world'); return new Promise((resolve) => { setTimeout(() => { resolve('world'); }, 1000); }); }; const rfn2 = async () => { console.log('\\\\\\\\'); // hello console.log('1', fn2(1)); // hello console.log('2', await fn2(2)); // hello console.log('3', await fn2(3)); // Promise { } console.log('-----------'); // world }; rfn2();