@@ -4173,7 +4173,9 @@ function serializeErrorValue(request: Request, error: Error): string {
41734173 }
41744174 const errorInfo : ReactErrorInfoDev = { name , message , stack , env } ;
41754175 if ( 'cause' in error ) {
4176- errorInfo . cause = error . cause ;
4176+ const cause : ReactClientValue = ( error . cause : any ) ;
4177+ const causeId = outlineModel ( request , cause ) ;
4178+ errorInfo . cause = serializeByValueID ( causeId ) ;
41774179 }
41784180 const id = outlineModel ( request , errorInfo ) ;
41794181 return '$Z' + id . toString ( 16 ) ;
@@ -4185,7 +4187,11 @@ function serializeErrorValue(request: Request, error: Error): string {
41854187 }
41864188}
41874189
4188- function serializeDebugErrorValue ( request : Request , error : Error ) : string {
4190+ function serializeDebugErrorValue (
4191+ request : Request ,
4192+ counter : { objectLimit : number } ,
4193+ error : Error ,
4194+ ) : string {
41894195 if ( __DEV__ ) {
41904196 let name : string = 'Error' ;
41914197 let message : string ;
@@ -4208,7 +4214,10 @@ function serializeDebugErrorValue(request: Request, error: Error): string {
42084214 }
42094215 const errorInfo : ReactErrorInfoDev = { name, message, stack, env} ;
42104216 if ( 'cause' in error ) {
4211- errorInfo . cause = error . cause ;
4217+ counter . objectLimit -- ;
4218+ const cause : ReactClientValue = ( error . cause : any ) ;
4219+ const causeId = outlineDebugModel ( request , counter , cause ) ;
4220+ errorInfo . cause = serializeByValueID ( causeId ) ;
42124221 }
42134222 const id = outlineDebugModel (
42144223 request ,
@@ -4252,10 +4261,7 @@ function emitErrorChunk(
42524261 env = errorEnv ;
42534262 }
42544263 if ( 'cause' in error ) {
4255- // We're stringifying the error info without a replacer so we need to
4256- // make sure the Flight Client can revive the cause.
4257- // TODO: outline model accepts a serializeable value instead of a ready Client value
4258- const cause : ReactClientValue = ( error . cause : $FlowFixMe ) ;
4264+ const cause : ReactClientValue = ( error . cause : any ) ;
42594265 const causeId = debug
42604266 ? outlineDebugModel ( request , { objectLimit : 5 } , cause )
42614267 : outlineModel ( request , cause ) ;
@@ -4990,7 +4996,7 @@ function renderDebugModel(
49904996 return serializeDebugFormData ( request , value ) ;
49914997 }
49924998 if (value instanceof Error) {
4993- return serializeDebugErrorValue ( request , value ) ;
4999+ return serializeDebugErrorValue ( request , counter , value ) ;
49945000 }
49955001 if (value instanceof ArrayBuffer) {
49965002 return serializeDebugTypedArray ( request , 'A' , new Uint8Array ( value ) ) ;
0 commit comments