d) { resource[this.kResourceStore] = store; } } enterWith(store) { this._enable(); const resource = executionAsyncResource(); resource[this.kResourceStore] = store; } run(store, callback, ...args) { // Avoid creation of an AsyncResource if store is already active if (ObjectIs(store, this.getStore())) { return ReflectApply(callback, null, args); } this._enable(); const resource = executionAsyncResource(); const oldStore = resource[this.kResourceStore]; resource[this.kResourceStore] = store; try { return ReflectApply(callback, null, args); } finally { resource[this.kResourceStore] = oldStore; } } exit(callback, ...args) { if (!this.enabled) { return ReflectApply(callback, null, args); } this.disable(); try { return ReflectApply(callback, null, args); } finally { this._enable(); } } getStore() { if (this.enabled) { const resource = executionAsyncResource(); return resource[this.kResourceStore]; } } } module.exports = AsyncLocalStorage;