it("raw .abort.bind() leaks Event as reason — bindAbortRelay() does not", () => { // Demonstrates the bug: .abort.bind() passes the Event as abort reason const parentA = new AbortController(); const childA = new AbortController();
parentA.signal.addEventListener("abort", childA.abort.bind(childA), { once: true });
parentA.abort(); // childA.signal.reason is the Event, NOT an AbortError
expect(childA.signal.reason).not.toBeInstanceOf(DOMException);
// The fix: bindAbortRelay() ignores the Event argument const parentB = new AbortController(); const childB = new AbortController();
parentB.signal.addEventListener("abort", bindAbortRelay(childB), { once: true });
parentB.abort();
expectDefaultAbortReason(childB);
});
it("removeEventListener works with saved bindAbortRelay() reference", () => { const parent = new AbortController(); const child = new AbortController(); const onAbort = bindAbortRelay(child);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.