Skip to content

Commit

Permalink
perf_hooks: make PerformanceObserver an AsyncResource
Browse files Browse the repository at this point in the history
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 26, 2018
1 parent 9e509b6 commit 009e418
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions lib/perf_hooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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]);
}
Expand Down

0 comments on commit 009e418

Please sign in to comment.