node:async_hooks
O módulo node:async_hooks no Azion Runtime: AsyncLocalStorage e AsyncResource em uma function e um exemplo que carrega um ID de requisição.
O módulo node:async_hooks rastreia o ciclo de vida de recursos assíncronos, como descreve a documentação do async_hooks do Node.js. Os hooks dele são acionados em cada estágio de uma operação assíncrona, para propagação de contexto e depuração. No Azion Runtime, o módulo está disponível por meio da compatibilidade com Node.js. O uso comum dele em uma function é AsyncLocalStorage, que carrega dados do escopo da requisição, como um ID de requisição, entre chamadas assíncronas.
Em uma function com deploy feito e com azion dev, AsyncLocalStorage mantém o store dele através de um await e dentro de um callback de setTimeout, e, fora de run(), getStore() não retorna nenhum valor. AsyncResource também funciona: runInAsyncScope() executa o callback dele e retorna o valor do callback.
Exemplo
A function abaixo lê o header X-Request-Id, armazena o valor com AsyncLocalStorage e o registra em log a partir de funções que não o recebem como argumento:
Uma requisição com o header X-Request-Id: req-1 recebe o corpo ok. Enquanto a requisição é executada, a function registra estas linhas em log: