1'use strict';
2// Flags: --expose-gc --force-node-api-uncaught-exceptions-policy
3
4const common = require('../../common');
5const binding = require(`./build/${common.buildType}/test_finalizer`);
6const assert = require('assert');
7const tick = require('util').promisify(require('../../common/tick'));
8
9process.on('uncaughtException', common.mustCall((err) => {
10  assert.throws(() => { throw err; }, /finalizer error/);
11}));
12
13(async function() {
14  {
15    binding.malignFinalizerBuffer(common.mustCall(() => {
16      throw new Error('finalizer error');
17    }));
18  }
19  global.gc({ type: 'minor' });
20  await tick(common.platformTimeout(100));
21  global.gc();
22  await tick(common.platformTimeout(100));
23  global.gc();
24  await tick(common.platformTimeout(100));
25})().then(common.mustCall());
26