Scope
Port the worker, HTTP proxy, and request lifecycle needed by the unchanged copied corpus test:
test/js/node/test/parallel/test-http-proxy-request-invalid-char-in-url.mjs
Generic ESM lowering for node:worker_threads and Node common.mustCall enforcement landed in 2edc96ed2, so the reducer now executes the file instead of rejecting its module syntax.
Current evidence
zig-out/bin/home-debug test "$PWD/packages/runtime/test/bun-corpus/js/node/test/parallel/test-http-proxy-request-invalid-char-in-url.mjs"The isolated reducer now fails with real lifecycle evidence:
- proxy worker
messagecallback: expected exactly 2, actual 1; - proxy worker
exitcallback: expected exactly 1, actual 0; - nested completion callbacks: two more expected calls remain at 0.
The first worker message arrives, but the six sanitized requests do not drive the proxy through proxy-stopped, worker termination, and target-server shutdown.
Acceptance criteria
- Strip CR/LF from the request host/port before proxy dispatch, matching the upstream URLs and headers.
- Complete all six responses and preserve the exact request/proxy log sets.
- Deliver the worker's
proxy-stoppedmessage, terminate the worker, emitexit, and close the target server. - The unchanged upstream assertions, callback counts, topology, and workload pass.
Tracked from #66.