Contexto de petición sin prop drilling: AsyncLocalStorage en Node.js

Todo servicio de Node.js no trivial acaba chocando con el mismo muro: necesitas un trace ID, un tenant ID o el usuario autenticado disponible seis capas abajo en tu pila de llamadas, dentro de una utilidad que no tiene por qué saber nada de peticiones HTTP. La solución instintiva es añadir un parámetro ctx a cada función entre el manejador de la petición y esa utilidad. Tres meses después, el tipo ctx ha crecido hasta quince campos, la mitad de tus firmas de función empiezan con él, y añadir un nuevo valor de contexto implica tocar una docena de archivos.

AsyncLocalStorage — estable desde Node 16, disponible desde Node 12 tras un flag — resuelve esto de forma limpia. Es el equivalente en Node.js del almacenamiento local de hilo: un valor vinculado a un contexto de ejecución asíncrono que fluye automáticamente a través de await, setTimeout, Promise.then y los callbacks de event emitters sin ningún paso explícito de parámetros.