Excelente pergunta Carlos! Para quem ficou com dúvida sobre o que é esse código, é um trecho do módulo que controla e administra a conexão com o banco de dados: database.js
E a função checkForTooManyConnections()
tenta lidar de uma forma otimizada a quantidade de conexões com o banco de dados dentro de um ambiente serverless.
Isso eh um pattern ?
Não é um pattern, é só uma forma de organização de código.
Nesse caso em específico, as funções getConnectionLimits()
e getOpenedConnections()
que você anotou ali como helper Function
de fato não saem do closure
da função principal e são detalhes de implementação que eu queria esconder de dentro da função principal. E analizando agora, eu deveria passar o client
para dentro delas, mas tudo bem, elas acabam pegando pelo closure
de cima.
Então essas funções conseguem ser acessadas pelo código que está acima delas pelo fato do hoisting do JavaScript, que antes de executar o código, ele move para cima funções declaradas dessa forma (e outras coisas, como a inicialização de variáveis declaradas com var
) e isso faz qualquer parte daquele closure
ter acesso.