diff --git a/lib/perf_hooks.js b/lib/perf_hooks.js index 6fd6e4a6b768ce..025fa9edd06de1 100644 --- a/lib/perf_hooks.js +++ b/lib/perf_hooks.js @@ -36,6 +36,7 @@ const { NODE_PERFORMANCE_MILESTONE_PRELOAD_MODULE_LOAD_END } = constants; +const { AsyncResource } = require('async_hooks'); const L = require('internal/linkedlist'); const kInspect = require('internal/util').customInspectSymbol; const { inherits } = require('util'); @@ -317,12 +318,13 @@ class PerformanceObserverEntryList { } } -class PerformanceObserver { +class PerformanceObserver extends AsyncResource { constructor(callback) { if (typeof callback !== 'function') { const errors = lazyErrors(); throw new errors.TypeError('ERR_INVALID_CALLBACK'); } + super('PerformanceObserver'); Object.defineProperties(this, { [kTypes]: { enumerable: false, @@ -568,7 +570,7 @@ function getObserversList(type) { function doNotify() { this[kQueued] = false; - this[kCallback](this[kBuffer], this); + this.runInAsyncScope(this[kCallback], this, this[kBuffer], this); this[kBuffer][kEntries] = []; L.init(this[kBuffer][kEntries]); }