mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
de762b71f2
currentId is renamed to executionAsyncId triggerId is renamed to triggerAsyncId AsyncResource.triggerId is renamed to AsyncResource.triggerAsyncId AsyncHooksGetCurrentId is renamed to AsyncHooksGetExecutionAsyncId AsyncHooksGetTriggerId is renamed to AsyncHooksGetTriggerAsyncId PR-URL: https://github.com/nodejs/node/pull/13490 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Trevor Norris <trev.norris@gmail.com>
38 lines
1006 B
JavaScript
38 lines
1006 B
JavaScript
'use strict';
|
|
// Test that async ids that are added to the destroy queue while running a
|
|
// `destroy` callback are handled correctly.
|
|
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const async_hooks = require('async_hooks');
|
|
|
|
const initCalls = new Set();
|
|
let destroyResCallCount = 0;
|
|
let res2;
|
|
|
|
async_hooks.createHook({
|
|
init: common.mustCallAtLeast((id, provider, triggerAsyncId) => {
|
|
if (provider === 'foobar')
|
|
initCalls.add(id);
|
|
}, 2),
|
|
destroy: common.mustCallAtLeast((id) => {
|
|
if (!initCalls.has(id)) return;
|
|
|
|
switch (destroyResCallCount++) {
|
|
case 0:
|
|
// Trigger the second `destroy` call.
|
|
res2.emitDestroy();
|
|
break;
|
|
case 2:
|
|
assert.fail('More than 2 destroy() invocations');
|
|
break;
|
|
}
|
|
}, 2)
|
|
}).enable();
|
|
|
|
const res1 = new async_hooks.AsyncResource('foobar');
|
|
res2 = new async_hooks.AsyncResource('foobar');
|
|
res1.emitDestroy();
|
|
|
|
process.on('exit', () => assert.strictEqual(destroyResCallCount, 2));
|