%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'); if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); const http2 = require('http2'); const { Duplex } = require('stream'); const { Worker, workerData } = require('worker_threads'); // Tests the interaction between terminating a Worker thread and running // the native SetImmediate queue, which may attempt to perform multiple // calls into JS even though one already terminates the Worker. if (!workerData) { const counter = new Int32Array(new SharedArrayBuffer(4)); const worker = new Worker(__filename, { workerData: { counter } }); worker.on('exit', common.mustCall(() => { assert.strictEqual(counter[0], 1); })); } else { const { counter } = workerData; // Start two HTTP/2 connections. This will trigger write()s call from inside // the SetImmediate queue. for (let i = 0; i < 2; i++) { http2.connect('http://localhost', { createConnection() { return new Duplex({ write(chunk, enc, cb) { Atomics.add(counter, 0, 1); process.exit(); }, read() { } }); } }); } }