está explicado de una forma sencilla y didáctica
Cita: Ejecución asíncrona natural
Cita: El resultado de ejecutar este código puede desconcertar un poco, ya que si fuera un código síncrono esperaríamos ver lo mensajes STAR y END uno detrás de otro y terminados por COMPLETED, pero al ser un código asíncrono el resultado es este:
Cita: Lo que ha pasado es que se ha ejecutado el bucle for con cada una de las llamadas a asynSqrt() y directamente se ha pasado a ejecutar el mensaje COMPLETED, ya que todas las llamadas a nuestra función se ejecutan de forma asíncrona. Los resultados de esta ejecución no siguen ningún orden, ya que cada una de estas llamadas concluye sin respetar el orden de llamada.