diff --git a/packages/react-dom/src/__tests__/ReactDOMFizzServerNode-test.js b/packages/react-dom/src/__tests__/ReactDOMFizzServerNode-test.js
index d4f3486a1dbed..198ccb4f8f6a5 100644
--- a/packages/react-dom/src/__tests__/ReactDOMFizzServerNode-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMFizzServerNode-test.js
@@ -67,6 +67,21 @@ describe('ReactDOMFizzServerNode', () => {
expect(output.result).toMatchInlineSnapshot(`"
hello world
"`);
});
+ it('flush fully if piping in on onShellReady', async () => {
+ const {writable, output} = getTestWritable();
+ await act(() => {
+ const {pipe} = ReactDOMFizzServer.renderToPipeableStream(
+ hello world
,
+ {
+ onShellReady() {
+ pipe(writable);
+ },
+ },
+ );
+ });
+ expect(output.result).toMatchInlineSnapshot(`"hello world
"`);
+ });
+
it('should emit DOCTYPE at the root of the document', async () => {
const {writable, output} = getTestWritable();
await act(() => {
diff --git a/packages/react-server/src/ReactFizzServer.js b/packages/react-server/src/ReactFizzServer.js
index a0388968e8244..a159771421b7d 100644
--- a/packages/react-server/src/ReactFizzServer.js
+++ b/packages/react-server/src/ReactFizzServer.js
@@ -4335,6 +4335,7 @@ function finishedTask(
boundary: Root | SuspenseBoundary,
segment: null | Segment,
) {
+ request.allPendingTasks--;
if (boundary === null) {
if (segment !== null && segment.parentFlushed) {
if (request.completedRootSegment !== null) {
@@ -4417,7 +4418,6 @@ function finishedTask(
}
}
- request.allPendingTasks--;
if (request.allPendingTasks === 0) {
completeAll(request);
}