Permalink
Browse files

perf_hooks: make PerformanceObserver an AsyncResource

PR-URL: #18789
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
  • Loading branch information...
jasnell committed Feb 16, 2018
1 parent 9e509b6 commit 009e41826f47c595ca994f673023f9380198be36
Showing with 4 additions and 2 deletions.
  1. +4 −2 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]);
}

0 comments on commit 009e418

Please sign in to comment.