0
0
mirror of https://github.com/nodejs/node.git synced 2024-12-01 16:10:02 +01:00
nodejs/test/parallel/test-async-wrap-promise-after-enabled.js
Anna Henningsen 90877003c1
async_wrap: fix Promises with later enabled hooks
Assign a `PromiseWrap` instance to Promises that do not have one
yet when the PromiseHook is being called.

Fixes: https://github.com/nodejs/node/issues/13237
PR-URL: https://github.com/nodejs/node/pull/13242
Reviewed-By: Andreas Madsen <amwebdk@gmail.com>
Reviewed-By: Matthew Loring <mattloring@google.com>
2017-05-28 17:13:01 +02:00

35 lines
769 B
JavaScript

'use strict';
// Regression test for https://github.com/nodejs/node/issues/13237
const common = require('../common');
const assert = require('assert');
const async_hooks = require('async_hooks');
const seenEvents = [];
const p = new Promise((resolve) => resolve(1));
p.then(() => seenEvents.push('then'));
const hooks = async_hooks.createHook({
init: common.mustNotCall(),
before: common.mustCall((id) => {
assert.ok(id > 1);
seenEvents.push('before');
}),
after: common.mustCall((id) => {
assert.ok(id > 1);
seenEvents.push('after');
hooks.disable();
})
});
setImmediate(() => {
assert.deepStrictEqual(seenEvents, ['before', 'then', 'after']);
});
hooks.enable(); // After `setImmediate` in order to not catch its init event.