From 009e41826f47c595ca994f673023f9380198be36 Mon Sep 17 00:00:00 2001 From: James M Snell Date: Fri, 16 Feb 2018 12:12:17 -0800 Subject: perf_hooks: make PerformanceObserver an AsyncResource PR-URL: https://github.com/nodejs/node/pull/18789 Reviewed-By: Ali Ijaz Sheikh Reviewed-By: Matteo Collina --- lib/perf_hooks.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/perf_hooks.js') diff --git a/lib/perf_hooks.js b/lib/perf_hooks.js index 6fd6e4a6b7..025fa9edd0 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]); } -- cgit v1.2.3