summaryrefslogtreecommitdiff
path: root/test/parallel/test-async-hooks-prevent-double-destroy.js
blob: 689dc399f9d2f2fd3335bd03b082060ad9f77946 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'use strict';
// Flags: --expose_gc

// This test ensures that userland-only AsyncResources cause a destroy event to
// be emitted when they get gced.

const common = require('../common');
const async_hooks = require('async_hooks');

const hook = async_hooks.createHook({
  destroy: common.mustCallAtLeast(2) // 1 immediate + manual destroy
}).enable();

{
  const res = new async_hooks.AsyncResource('foobar');
  res.emitDestroy();
}

setImmediate(() => {
  global.gc();
  setImmediate(() => {
    hook.disable();
  });
});