File tree Expand file tree Collapse file tree 1 file changed +28
-9
lines changed
Expand file tree Collapse file tree 1 file changed +28
-9
lines changed Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments