1'use strict'; 2const common = require('../common'); 3 4const { Worker } = require('worker_threads'); 5const { createHook } = require('async_hooks'); 6const { strictEqual } = require('assert'); 7 8let handle; 9 10createHook({ 11 init(asyncId, type, triggerAsyncId, resource) { 12 if (type === 'WORKER') { 13 handle = resource; 14 this.disable(); 15 } 16 } 17}).enable(); 18 19const w = new Worker('', { eval: true }); 20 21strictEqual(handle.hasRef(), true); 22w.unref(); 23strictEqual(handle.hasRef(), false); 24w.ref(); 25strictEqual(handle.hasRef(), true); 26 27w.on('exit', common.mustCall((exitCode) => { 28 strictEqual(exitCode, 0); 29 strictEqual(handle.hasRef(), true); 30 setTimeout(common.mustCall(() => { 31 strictEqual(handle.hasRef(), undefined); 32 }), 0); 33})); 34