Skip to content

Commit 0eafe40

Browse files
committed
Reject
1 parent a008c55 commit 0eafe40

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

src/compiler/FantasyStatblocksCompiler.ts

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -163,15 +163,34 @@ async function tryRenderStatblock(
163163
return div;
164164
}
165165

166-
await new Promise<void>((resolve) => {
167-
const observer = new MutationObserver(() => {
168-
if (div.querySelector(".statblock")) {
169-
observer.disconnect();
170-
resolve();
171-
}
172-
});
173-
observer.observe(div, { childList: true, subtree: true });
174-
});
166+
await Promise.race([
167+
new Promise<void>((resolve) => {
168+
const observer = new MutationObserver(() => {
169+
if (div.querySelector(".statblock")) {
170+
observer.disconnect();
171+
resolve();
172+
}
173+
});
174+
observer.observe(div, { childList: true, subtree: true });
175+
}),
176+
new Promise<void>((_, reject) => {
177+
const timeout = setTimeout(() => {
178+
reject(
179+
new Error(
180+
"Timeout: .statblock element was not injected within the expected time.",
181+
),
182+
);
183+
}, 5000); // 5 seconds timeout
184+
185+
// Ensure the timeout is cleared if the observer resolves first
186+
const observer = new MutationObserver(() => {
187+
if (div.querySelector(".statblock")) {
188+
clearTimeout(timeout);
189+
}
190+
});
191+
observer.observe(div, { childList: true, subtree: true });
192+
}),
193+
]);
175194

176195
return div;
177196
}

0 commit comments

Comments
 (0)