В коде HTTP клиента есть безобидная строчка - создается стрелочная функция, если упростить:
createCache: createCache ? (cacheOptions) => createCache('memory', cacheOptions) : undefined,И тут наше первое замыкание, которое еще само по себе не проблема.
Эта функция создается в контексте фабрики HTTP клиентов, где есть ссылка на некий
commandLineExecutionContext - это служебный объект Tramvai который напрямую ссылается на Dependency Injection контейнер запроса.Таким образом полный пример кода:
js
const httpClientFactory = ({ ..., commandLineExecutionContext }) => {
const options = {
...,
createCache: createCache ? (cacheOptions) => createCache('memory', cacheOptions) : undefined,
}
}
Где Closure функции
createCache теперь всегда ссылается на commandLineExecutionContext, который в свою очередь тянет ссылку на весь DI контейнер (`ChildContainer` на предыдущем скрине)