@@ -125,7 +125,7 @@ public async Task<dynamic> QueryObjectsAsync(JSHandle prototypeHandle)
125125 throw new PuppeteerException ( "Prototype JSHandle must not be referencing primitive value" ) ;
126126 }
127127
128- dynamic response = await _client . SendAsync ( "Runtime.queryObjects" , new Dictionary < string , object > ( )
128+ dynamic response = await _client . SendAsync ( "Runtime.queryObjects" , new Dictionary < string , object >
129129 {
130130 { "prototypeObjectId" , objectId . ToString ( ) }
131131 } ) ;
@@ -140,7 +140,7 @@ internal async Task<JSHandle> EvaluateExpressionHandleAsync(string script)
140140 return null ;
141141 }
142142
143- return await EvaluateHandleAsync ( "Runtime.evaluate" , new Dictionary < string , object > ( )
143+ return await EvaluateHandleAsync ( "Runtime.evaluate" , new Dictionary < string , object >
144144 {
145145 { "contextId" , _contextId } ,
146146 { "expression" , script } ,
@@ -156,7 +156,7 @@ internal async Task<JSHandle> EvaluateFunctionHandleAsync(string script, params
156156 return null ;
157157 }
158158
159- return await EvaluateHandleAsync ( "Runtime.callFunctionOn" , new Dictionary < string , object > ( )
159+ return await EvaluateHandleAsync ( "Runtime.callFunctionOn" , new Dictionary < string , object >
160160 {
161161 { "functionDeclaration" , script } ,
162162 { "executionContextId" , _contextId } ,
@@ -169,9 +169,20 @@ internal async Task<JSHandle> EvaluateFunctionHandleAsync(string script, params
169169 private async Task < T > EvaluateAsync < T > ( Task < JSHandle > handleEvaluator )
170170 {
171171 var handle = await handleEvaluator ;
172- var result = await handle . JsonValueAsync < T > ( )
173- . ContinueWith ( jsonTask => jsonTask . Exception != null ? default ( T ) : jsonTask . Result ) ;
172+ var result = default ( T ) ;
174173
174+ try
175+ {
176+ result = await handle . JsonValueAsync < T > ( )
177+ . ContinueWith ( jsonTask => jsonTask . Exception != null ? default : jsonTask . Result ) ;
178+ }
179+ catch ( Exception ex )
180+ {
181+ if ( ! ex . Message . Contains ( "Object reference chain is too long" ) )
182+ {
183+ throw new EvaluationFailedException ( ex . Message , ex ) ;
184+ }
185+ }
175186 await handle . DisposeAsync ( ) ;
176187 return result ;
177188 }
0 commit comments