| async function async1() {console.log('async1 start');
 await async2();
 console.log('async1 end');
 }
 
 async function async2() {
 console.log('async2');
 }
 
 console.log('script start');
 
 setTimeout(function () {
 console.log('setTimeout');
 }, 0)
 
 async1();
 
 new Promise(function (resolve) {
 console.log('promise1');
 resolve();
 }).then(function () {
 console.log('promise2');
 })
 
 console.log('script end');
 
 | 
script start
async1 start
async2
promise1
script end
async1 end
promise2
setTimeout