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 4c1b0f7585000..85b452ccc1a06 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js @@ -1046,4 +1046,72 @@ describe('ReactFlightDOM', () => { }); expect(container.innerHTML).toBe('
async hello
'); }); + + // @gate enableUseHook + it('should throw on the client if a passed promise eventually rejects', async () => { + const reportedErrors = []; + const theError = new Error('Server throw'); + + async function getData() { + throw theError; + } + + function Component({data}) { + const text = use(data); + return{text}
; + } + + const ClientComponent = clientExports(Component); + + function ServerComponent() { + const data = getData(); // no await here + return+ {__DEV__ ? e.message + ' + ' : null} + {e.digest} +
+ )}> +Server throw + a dev digest
' + : 'digest("Server throw")
', + ); + expect(reportedErrors).toEqual([theError]); + }); }); diff --git a/packages/react-server/src/ReactFlightServer.js b/packages/react-server/src/ReactFlightServer.js index f610f99b49161..1d5f5b87b6637 100644 --- a/packages/react-server/src/ReactFlightServer.js +++ b/packages/react-server/src/ReactFlightServer.js @@ -285,7 +285,8 @@ function serializeThenable(request: Request, thenable: Thenable