perf_hooks: make PerformanceObserver an AsyncResource

PR-URL: https://github.com/nodejs/node/pull/18789
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
pull/18789/merge
James M Snell 2018-02-16 12:12:17 -08:00
parent 9e509b622b
commit 009e41826f
1 changed files with 4 additions and 2 deletions

View File

@ -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]);
}