Files
bun.sh/test/js/node/async_hooks/async-context/async-context-events-on-async.js
Jarred Sumner e1505b7143 Use JSC::Integrity:: auditCellFully in bindings (#22538)
### What does this PR do?

### How did you verify your code works?
2025-09-10 00:31:54 -07:00

34 lines
904 B
JavaScript

process.exitCode = 1;
const { AsyncLocalStorage } = require("async_hooks");
const { EventEmitter, on } = require("events");
const asyncLocalStorage = new AsyncLocalStorage();
asyncLocalStorage.run({ test: "events.on" }, async () => {
const emitter = new EventEmitter();
// Start async iterator in background
(async () => {
try {
for await (const [value] of on(emitter, "data")) {
if (asyncLocalStorage.getStore()?.test !== "events.on") {
console.error("FAIL: events.on async iterator lost context");
process.exit(1);
}
if (value === "end") break;
}
process.exit(0);
} catch (err) {
console.error("ERROR:", err);
process.exit(1);
}
})();
// Emit events after a delay
setTimeout(() => {
emitter.emit("data", "test1");
emitter.emit("data", "test2");
emitter.emit("data", "end");
}, 10);
});