mirror of https://github.com/lukechilds/node.git
Browse Source
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>v6
3 changed files with 49 additions and 10 deletions
@ -0,0 +1,34 @@ |
|||
'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.
|
Loading…
Reference in new issue