Files
Chris Tate b8344a6cb5 Support Node 24 system error utilities (#646)
* Support Node 24 system error utilities

* Wait for writable drain in the stream fixture
2026-10-03 18:34:51 -05:00

30 lines
1.6 KiB
JavaScript

import * as util from "node:util";
import { getSystemErrorMap as all } from "util";
export function reportSystemErrors() {
const { getSystemErrorName: name, getSystemErrorMessage: message } = util;
const map = all();
console.log("map", map instanceof Map, map.size);
for (const [code, pair] of map) console.log(code, ...pair, name(code), message(code));
const fresh = all();
console.log("identity", map.get(-3001) === map.get(-3001), map.get(-3001) === fresh.get(-3001));
map.get(-3001)[0] = "changed";
map.get(-3001).push("extended");
map.set(-123456, ["CUSTOM", "custom message"]);
console.log("mutation", JSON.stringify(map.get(-3001)), fresh.get(-3001)[0], name(-3001), fresh.has(-123456));
map.delete(-3001);
console.log("delete", map.has(-3001), fresh.has(-3001));
map.clear();
console.log("clear", map.size, fresh.size);
for (const code of [-123456, -2147483648, -2147483649, -4294967298, -9007199254740991]) console.log("unknown", code, name(code), message(code));
for (const value of [undefined, null, "-2", true, 2n, Symbol("x"), {}, [], new Number(-2), new Date(0), function sample() {}, 0, -0, 0.5, -0.5, NaN, Infinity, -Infinity, 4294967297, -9007199254740992]) {
for (const read of [name, message]) {
try { console.log("unexpected", read(value)); }
catch (error) { console.log(error.name, error.code, error.message); }
}
}
try { name(); } catch (error) { console.log("omitted", error.name, error.code, error.message); }
try { message(); } catch (error) { console.log("omitted", error.name, error.code, error.message); }
}