Tengo problemas para encontrar la respuesta a esto. Cuando llamamos a fetch(), ¿el navegador abre un nuevo hilo o la llamada simplemente se coloca en la microcola?
La respuesta es una especie de "ambos":
La solicitud de red en sí se procesa en paralelo con cualquier otra cosa que suceda en su subproceso de JavaScript, no en el subproceso de JavaScript. (En todos los navegadores principales).
Cuando se completa la solicitud de red, se pone en cola una reacción de promesa (cumplimiento o rechazo) para que el subproceso de JavaScript la recoja la próxima vez que compruebe la cola correspondiente. (Creo que lo que sucede es que el navegador pone en cola una tarea que cumple la promesa, que a su vez pone en cola cualquier reacción de promesa relevante en la cola de microtareas. Sin embargo, los detalles realmente no importan; fundamentalmente, una vez que se completa la solicitud de red, un la tarea/microtarea se pone en cola en algún lugar para cualquier reacción de promesa que deba ocurrir, y el subproceso de JavaScript lo recoge como otras tareas/microtareas).