diff --git a/packages/react-dom/src/__tests__/ReactServerRendering-test.js b/packages/react-dom/src/__tests__/ReactServerRendering-test.js index b28892df1124..89a5f3211653 100644 --- a/packages/react-dom/src/__tests__/ReactServerRendering-test.js +++ b/packages/react-dom/src/__tests__/ReactServerRendering-test.js @@ -556,6 +556,52 @@ describe('ReactDOMServer', () => { }); }); + describe('renderToNodeStream', () => { + it('should generate simple markup', () => { + const SuccessfulElement = React.createElement(() => ); + const response = ReactDOMServer.renderToNodeStream(SuccessfulElement); + expect(response.read().toString()).toMatch( + new RegExp(''), + ); + }); + + it('should handle errors correctly', () => { + const FailingElement = React.createElement(() => { + throw new Error('An Error'); + }); + const response = ReactDOMServer.renderToNodeStream(FailingElement); + return new Promise(resolve => { + response.once('error', () => { + resolve(); + }); + expect(response.read()).toBeNull(); + }); + }); + }); + + describe('renderToStaticNodeStream', () => { + it('should generate simple markup', () => { + const SuccessfulElement = React.createElement(() => ); + const response = ReactDOMServer.renderToStaticNodeStream( + SuccessfulElement, + ); + expect(response.read().toString()).toMatch(new RegExp('')); + }); + + it('should handle errors correctly', () => { + const FailingElement = React.createElement(() => { + throw new Error('An Error'); + }); + const response = ReactDOMServer.renderToStaticNodeStream(FailingElement); + return new Promise(resolve => { + response.once('error', () => { + resolve(); + }); + expect(response.read()).toBeNull(); + }); + }); + }); + it('warns with a no-op when an async setState is triggered', () => { class Foo extends React.Component { UNSAFE_componentWillMount() { diff --git a/packages/react-dom/src/server/ReactDOMNodeStreamRenderer.js b/packages/react-dom/src/server/ReactDOMNodeStreamRenderer.js index 7478d86cc3f1..22ccd7385399 100644 --- a/packages/react-dom/src/server/ReactDOMNodeStreamRenderer.js +++ b/packages/react-dom/src/server/ReactDOMNodeStreamRenderer.js @@ -18,8 +18,9 @@ class ReactMarkupReadableStream extends Readable { this.partialRenderer = new ReactPartialRenderer(element, makeStaticMarkup); } - _destroy() { + _destroy(err, callback) { this.partialRenderer.destroy(); + callback(err); } _read(size) {