Offload functions to worker threads with shared memory primitives for Node.js.
8
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: use setTimeout from node:timers/promises

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+13 -8
+2 -1
src/worker-pool.ts
··· 1 + import { setTimeout } from 'node:timers/promises'; 1 2 import { Worker } from 'node:worker_threads'; 2 3 import { availableParallelism } from 'node:os'; 3 4 import { setupWorker, execute, dispatchStream } from './execute.ts'; ··· 79 80 if (opts?.shutdownTimeout != null) { 80 81 await Promise.race([ 81 82 settle, 82 - new Promise<void>((r) => setTimeout(r, opts.shutdownTimeout)), 83 + setTimeout(opts.shutdownTimeout), 83 84 ]); 84 85 } else { 85 86 await settle;
+2 -1
test/async-dispose.test.ts
··· 1 + import { setTimeout } from 'node:timers/promises'; 1 2 import { describe, it } from 'node:test'; 2 3 import assert from 'node:assert/strict'; 3 4 import { workers } from 'moroutine'; ··· 51 52 } 52 53 })(); 53 54 // Let a couple items flow before disposing 54 - await new Promise((r) => setTimeout(r, 60)); 55 + await setTimeout(60); 55 56 await run[Symbol.asyncDispose](); 56 57 await iterating; 57 58 assert.equal(results.length, 5);
+3 -2
test/fixtures/async-dispose.ts
··· 1 + import { setTimeout } from 'node:timers/promises'; 1 2 import { mo } from 'moroutine'; 2 3 3 4 export const slowTask = mo(import.meta, async (ms: number): Promise<string> => { 4 - await new Promise((r) => setTimeout(r, ms)); 5 + await setTimeout(ms); 5 6 return 'done'; 6 7 }); 7 8 ··· 14 15 15 16 export const slowStream = mo(import.meta, async function* (n: number) { 16 17 for (let i = 0; i < n; i++) { 17 - await new Promise((r) => setTimeout(r, 20)); 18 + await setTimeout(20); 18 19 yield i; 19 20 } 20 21 });
+2 -1
test/shared/mutex.test.ts
··· 1 + import { setTimeout } from 'node:timers/promises'; 1 2 import { describe, it } from 'node:test'; 2 3 import assert from 'node:assert/strict'; 3 4 import { mutex } from 'moroutine'; ··· 32 33 const task = async (id: number) => { 33 34 const guard = await m.lock(); 34 35 order.push(id); 35 - await new Promise((r) => setTimeout(r, 10)); 36 + await setTimeout(10); 36 37 order.push(id); 37 38 m.unlock(); 38 39 };
+4 -3
test/shared/rwlock.test.ts
··· 1 + import { setTimeout } from 'node:timers/promises'; 1 2 import { describe, it } from 'node:test'; 2 3 import assert from 'node:assert/strict'; 3 4 import { rwlock } from 'moroutine'; ··· 39 40 rw.readUnlock(); 40 41 })(); 41 42 42 - await new Promise((r) => setTimeout(r, 20)); 43 + await setTimeout(20); 43 44 order.push('write-end'); 44 45 rw.writeUnlock(); 45 46 ··· 60 61 rw.writeUnlock(); 61 62 })(); 62 63 63 - await new Promise((r) => setTimeout(r, 20)); 64 + await setTimeout(20); 64 65 order.push('w1-end'); 65 66 rw.writeUnlock(); 66 67 ··· 111 112 })(); 112 113 113 114 // Let readers queue up 114 - await new Promise((r) => setTimeout(r, 20)); 115 + await setTimeout(20); 115 116 rw.writeUnlock(); 116 117 117 118 const results = await Promise.all([reader1Done, reader2Done]);