%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
'use strict'; const common = require('../common'); const assert = require('assert'); const { MessageChannel } = require('worker_threads'); // Make sure that an infinite asynchronous .on('message')/postMessage loop // does not lead to a stack overflow and does not starve the event loop. // We schedule timeouts both from before the .on('message') handler and // inside of it, which both should run. const { port1, port2 } = new MessageChannel(); let count = 0; port1.on('message', () => { if (count === 0) { setTimeout(common.mustCall(() => { port1.close(); }), 0); } port2.postMessage(0); assert(count++ < 10000, `hit ${count} loop iterations`); }); port2.postMessage(0); // This is part of the test -- the event loop should be available and not stall // out due to the recursive .postMessage() calls. setTimeout(common.mustCall(), 0);