%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 fs = require('fs/promises'); const { scheduler } = require('timers/promises'); const { parentPort, Worker } = require('worker_threads'); const MAX_ITERATIONS = 5; const MAX_THREADS = 6; // 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; function spinWorker(iter) { const w = new Worker(__filename); w.on('message', common.mustCall((msg) => { assert.strictEqual(msg, 'terminate'); w.terminate(); })); w.on('exit', common.mustCall(() => { if (iter < MAX_ITERATIONS) spinWorker(++iter); })); } for (let i = 0; i < MAX_THREADS; i++) { spinWorker(0); } } else { async function open_nok() { await assert.rejects( fs.open('this file does not exist'), { code: 'ENOENT', syscall: 'open' } ); await scheduler.yield(); await open_nok(); } // These async function calls never return as they are meant to continually // open nonexistent files until the worker is terminated. open_nok(); open_nok(); parentPort.postMessage('terminate'); }