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) {