1'use strict';
2const common = require('../common');
3const assert = require('assert');
4const { promiseHooks } = require('v8');
5
6assert.throws(() => {
7  promiseHooks.onBefore(async function() { });
8}, /The "beforeHook" argument must be of type function/);
9
10assert.throws(() => {
11  promiseHooks.onBefore(async function*() { });
12}, /The "beforeHook" argument must be of type function/);
13
14let seen;
15
16const stop = promiseHooks.onBefore(common.mustCall((promise) => {
17  seen = promise;
18}, 1));
19
20const promise = Promise.resolve().then(() => {
21  assert.strictEqual(seen, promise);
22  stop();
23});
24
25promise.then();
26
27assert.strictEqual(seen, undefined);
28