Skip to content

Commit 451d67a

Browse files
committed
drain the microtask queue before returning from peekRender
1 parent 932f938 commit 451d67a

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/renderStream/createRenderStream.tsx

+18-9
Original file line numberDiff line numberDiff line change
@@ -279,18 +279,27 @@ export function createRenderStream<
279279
return stream.renders.length
280280
},
281281
async peekRender(options: NextRenderOptions = {}) {
282-
if (iteratorPosition < stream.renders.length) {
283-
const peekedRender = stream.renders[iteratorPosition]
282+
try {
283+
if (iteratorPosition < stream.renders.length) {
284+
const peekedRender = stream.renders[iteratorPosition]
284285

285-
if (peekedRender.phase === 'snapshotError') {
286-
throw peekedRender.error
287-
}
286+
if (peekedRender.phase === 'snapshotError') {
287+
throw peekedRender.error
288+
}
288289

289-
return peekedRender
290+
return peekedRender
291+
}
292+
return await stream
293+
.waitForNextRender(options)
294+
.catch(rethrowWithCapturedStackTrace(stream.peekRender))
295+
} finally {
296+
/** drain microtask queue */
297+
await new Promise<void>(resolve => {
298+
setTimeout(() => {
299+
resolve()
300+
}, 0)
301+
})
290302
}
291-
return stream
292-
.waitForNextRender(options)
293-
.catch(rethrowWithCapturedStackTrace(stream.peekRender))
294303
},
295304
takeRender: markAssertable(async function takeRender(
296305
options: NextRenderOptions = {},

0 commit comments

Comments
 (0)