diff --git a/lib/internal/util.js b/lib/internal/util.js index ce332aa9daa178..38002b421376ec 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -694,7 +694,26 @@ function isArrayBufferDetached(value) { return false; } +/** + * Helper function to lazy-load an initialize-once value. + * @template T Return value of initializer + * @param {()=>T} initializer Initializer of the lazily loaded value. + * @returns {()=>T} + */ +function getLazy(initializer) { + let value; + let initialized = false; + return function() { + if (initialized === false) { + value = initializer(); + initialized = true; + } + return value; + }; +} + module.exports = { + getLazy, assertCrypto, cachedResult, convertToValidSignal,