const c = async() => console.log("2") const a = async() => { console.log("1") await c() console.log("4") } const b = () => console.log("3"); console.log("start") a(); b();Esperaría que la secuencia aquí fuera 3 1 4 2, pero aparentemente no lo es. La función asíncrona parece ejecutarse sincrónicamente y agregarse a la pila de llamadas HASTA que regresen, y ahí es cuando el resto se agrega a la cola de eventos. ¿Por qué es eso y por qué no se agrega instantáneamente a la cola de eventos?
Enlace a la especificación ECMA y otras lecturas también muy apreciadas
Esto parece explicar por qué 1 se imprime primero, pero no por qué 2 se imprime en segundo lugar, ya que por esa respuesta debería devolver una promesa en PRIMERA espera, pero en realidad ejecuta b sincrónicamente: ¿Cuándo la función asíncrona realmente devuelve una promesa pendiente?