diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js
index 9ff119ac1419d..cea35bc1b5c29 100644
--- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js
+++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js
@@ -812,6 +812,105 @@ describe('ReactFlightDOM', () => {
expect(reportedErrors).toEqual([]);
});
+ it('should handle streaming async server components', async () => {
+ const reportedErrors = [];
+
+ const Row = async ({current, next}) => {
+ const chunk = await next;
+
+ if (chunk.done) {
+ return chunk.value;
+ }
+
+ return (
+
loading
); + const {writable, readable} = getTestStream(); + const {pipe} = ReactServerDOMServer.renderToPipeableStream( + suspendedChunk.row, + webpackMap, + { + onError(error) { + reportedErrors.push(error); + }, + }, + ); + pipe(writable); + const response = ReactServerDOMClient.createFromReadableStream(readable); + const container = document.createElement('div'); + const root = ReactDOMClient.createRoot(container); + + function ClientRoot() { + return use(response); + } + + await act(() => { + root.render(loading
'); + + const donePromise = createResolvablePromise(); + const value =loading
'); + + await act(async () => { + jest.advanceTimersByTime(500); + await resolvePostsData('posts'); + await 'the inner async function'; + }); + + expect(container.innerHTML).toBe('