%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// When MessagePort.onmessage is set to a value that is not a function, the
// setter should call .unref() and .stop(), clearing a previous onmessage
// listener from holding the event loop open. This test confirms that
// functionality.
'use strict';
const common = require('../common');
const { Worker, parentPort } = require('worker_threads');
// Do not use isMainThread so that this test itself can be run inside a Worker.
if (!process.env.HAS_STARTED_WORKER) {
process.env.HAS_STARTED_WORKER = 1;
const w = new Worker(__filename);
w.postMessage(2);
} else {
// .onmessage uses a setter. Set .onmessage to a function that ultimately
// should not be called. This will call .ref() and .start() which will keep
// the event loop open (and prevent this from exiting) if the subsequent
// assignment of a value to .onmessage doesn't call .unref() and .stop().
parentPort.onmessage = common.mustNotCall();
// Setting `onmessage` to a value that is not a function should clear the
// previous value and also should allow the event loop to exit. (In other
// words, this test should exit rather than run indefinitely.)
parentPort.onmessage = 'fhqwhgads';
}