diff --git a/packages/react-server/src/ReactFlightReplyServer.js b/packages/react-server/src/ReactFlightReplyServer.js index 39734dae7ca..742cae6d201 100644 --- a/packages/react-server/src/ReactFlightReplyServer.js +++ b/packages/react-server/src/ReactFlightReplyServer.js @@ -437,6 +437,11 @@ function loadServerReference, T>( if (typeof id !== 'string') { return (null: any); } + if (key === 'then') { + // This should never happen because we always serialize objects with then-functions + // as "thenable" which reduces to ReactPromise with no other fields. + return (null: any); + } const serverReference: ServerReference = resolveServerReference<$FlowFixMe>(response._bundlerConfig, id); // We expect most servers to not really need this because you'd just have all @@ -976,7 +981,17 @@ function extractIterator(response: Response, model: Array): Iterator { return model[Symbol.iterator](); } -function createModel(response: Response, model: any): any { +function createModel( + response: Response, + model: any, + parentObject: Object, + key: string, +): any { + if (key === 'then' && typeof model === 'function') { + // This should never happen because we always serialize objects with then-functions + // as "thenable" which reduces to ReactPromise with no other fields. + return null; + } return model; }