Skip to content

Commit

Permalink
async_hooks: make sure .{en|dis}able() === this
Browse files Browse the repository at this point in the history
Make sure that `hook.enable()` and `hook.disable()` return `hook`
consistently, as the documentation indicates.

PR-URL: #13418
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Andreas Madsen <amwebdk@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
  • Loading branch information
addaleax committed Jun 10, 2017
1 parent 85cac4e commit bf61d97
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/async_hooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ class AsyncHook {

// Each hook is only allowed to be added once.
if (hooks_array.includes(this))
return;
return this;

if (!setupHooksCalled) {
setupHooksCalled = true;
Expand Down Expand Up @@ -124,7 +124,7 @@ class AsyncHook {

const index = hooks_array.indexOf(this);
if (index === -1)
return;
return this;

hook_fields[kInit] -= +!!this[init_symbol];
hook_fields[kBefore] -= +!!this[before_symbol];
Expand Down
20 changes: 20 additions & 0 deletions test/parallel/test-async-hooks-enable-disable.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const async_hooks = require('async_hooks');

const hook = async_hooks.createHook({
init: common.mustCall(() => {}, 1),
before: common.mustNotCall(),
after: common.mustNotCall(),
destroy: common.mustNotCall()
});

assert.strictEqual(hook.enable(), hook);
assert.strictEqual(hook.enable(), hook);

setImmediate(common.mustCall());

assert.strictEqual(hook.disable(), hook);
assert.strictEqual(hook.disable(), hook);
assert.strictEqual(hook.disable(), hook);

0 comments on commit bf61d97

Please sign in to comment.