Javascript opera en un solo hilo principal síncrono. y a través del bucle de eventos, espera una nueva microtarea/macrotarea que la API web interna del navegador nos devuelve. He visto ejemplos de fetch, xhr, me preguntaba si este también es el caso con DOM escuchando las acciones del usuario. Dado que no puedo imaginar cómo un solo hilo puede escuchar la entrada del usuario pero no bloquear el resto del JavaScript en la página web.
Aquí hago la generalización a partir de lo que entiendo de fetch y xhr, sé que las solicitudes http de la red están operando en un subproceso separado y el enlace del navegador interno ayuda a webapi a devolver una tarea a la cola de tareas micro/macro para que el siguiente ciclo de eventos detecte ( cuando la pila está vacía).
u otro ejemplo, como setTimeout regresa a la cola de macrotareas. pero el cronometraje nunca está en el hilo de javascript.
El DOM también es una API web y no forma parte de JS. Cuando un evento se dispara desde un elemento DOM al que ha adjuntado un oyente (haciendo clic en un botón al que ha adjuntado un oyente, por ejemplo), colocará la devolución de llamada de ese oyente en la Cola adecuada para que la procese JS Stack, por lo tanto, nunca ingrese la cola hasta que se haya hecho clic en el elemento DOM. Con esto, podría tener docenas / n cantidad de oyentes que maneja la API web DOM que no bloquearán el único subproceso JS ni ingresarán a la cola a menos que interactúen específicamente con ellos.
Si un evento se activa desde un elemento DOM pero no tiene un oyente adjunto, no sucederá nada en la pila, ya que no ingresará una devolución de llamada a su cola.