Files
bun.sh/test/js/node/http/node-http-clientError-catch.js
Ciro Spaciari 59b2a60790 compat(node:http) more passing (#19236)
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com>
Co-authored-by: 190n <ben@bun.sh>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-04-24 19:26:55 -07:00

33 lines
938 B
JavaScript

import http from "node:http";
import assert from "node:assert";
import { once } from "node:events";
import { connect } from "node:net";
const { promise: uncaughtExceptionPromise, resolve, reject } = Promise.withResolvers();
process.once("uncaughtException", err => {
resolve(err);
});
await using server = http.createServer(reject);
server.on("clientError", () => {
throw new Error("thrown from clientError");
});
server.listen(0);
await once(server, "listening");
const port = server.address().port;
const client = connect(port, undefined, () => {
// HTTP request with invalid Content-Length
// The Content-Length says 10 but the actual body is 20 bytes
// Send the request
client.write(
`POST /test HTTP/1.1\r\nHost: localhost:${port}\r\nContent-Type: text/plain\r\nContent-Length: invalid\r\n\r\n`,
);
});
const err = await uncaughtExceptionPromise;
assert.strictEqual(err.message, "thrown from clientError");