@@ -143,39 +143,40 @@ private async Task ProcessEventsLoopAsync()
143143    { 
144144        while  ( await  _pendingEvents . Reader . WaitToReadAsync ( ) . ConfigureAwait ( false ) ) 
145145        { 
146-             try 
146+             while   ( _pendingEvents . Reader . TryRead ( out   var   eventMessage ) ) 
147147            { 
148-                 var  result  =  await  _pendingEvents . Reader . ReadAsync ( ) . ConfigureAwait ( false ) ; 
149- 
150-                 if  ( _eventHandlers . TryGetValue ( result . Method ,  out  var  eventHandlers ) ) 
148+                 try 
151149                { 
152-                     if  ( eventHandlers   is  not  null ) 
150+                     if  ( _eventHandlers . TryGetValue ( eventMessage . Method ,   out   var   eventHandlers ) ) 
153151                    { 
154-                         foreach   ( var   handler   in   eventHandlers . ToArray ( ) )   // copy handlers avoiding modified collection while iterating 
152+                         if   ( eventHandlers   is  not  null ) 
155153                        { 
156-                             var  args  =  ( EventArgs ) result . Params . Deserialize ( handler . EventArgsType ,  _jsonSerializerContext ) ! ; 
157- 
158-                             args . BiDi  =  _bidi ; 
159- 
160-                             // handle browsing context subscriber 
161-                             if  ( handler . Contexts  is  not null  &&  args  is  BrowsingContextEventArgs  browsingContextEventArgs  &&  handler . Contexts . Contains ( browsingContextEventArgs . Context ) ) 
162-                             { 
163-                                 await  handler . InvokeAsync ( args ) . ConfigureAwait ( false ) ; 
164-                             } 
165-                             // handle only session subscriber 
166-                             else  if  ( handler . Contexts  is  null ) 
154+                             foreach  ( var  handler  in  eventHandlers . ToArray ( ) )  // copy handlers avoiding modified collection while iterating 
167155                            { 
168-                                 await  handler . InvokeAsync ( args ) . ConfigureAwait ( false ) ; 
156+                                 var  args  =  ( EventArgs ) eventMessage . Params . Deserialize ( handler . EventArgsType ,  _jsonSerializerContext ) ! ; 
157+ 
158+                                 args . BiDi  =  _bidi ; 
159+ 
160+                                 // handle browsing context subscriber 
161+                                 if  ( handler . Contexts  is  not null  &&  args  is  BrowsingContextEventArgs  browsingContextEventArgs  &&  handler . Contexts . Contains ( browsingContextEventArgs . Context ) ) 
162+                                 { 
163+                                     await  handler . InvokeAsync ( args ) . ConfigureAwait ( false ) ; 
164+                                 } 
165+                                 // handle only session subscriber 
166+                                 else  if  ( handler . Contexts  is  null ) 
167+                                 { 
168+                                     await  handler . InvokeAsync ( args ) . ConfigureAwait ( false ) ; 
169+                                 } 
169170                            } 
170171                        } 
171172                    } 
172173                } 
173-             } 
174-             catch  ( Exception  ex ) 
175-             { 
176-                 if  ( _logger . IsEnabled ( LogEventLevel . Error ) ) 
174+                 catch  ( Exception  ex ) 
177175                { 
178-                     _logger . Error ( $ "Unhandled error processing BiDi event: { ex } ") ; 
176+                     if  ( _logger . IsEnabled ( LogEventLevel . Error ) ) 
177+                     { 
178+                         _logger . Error ( $ "Unhandled error processing BiDi event: { ex } ") ; 
179+                     } 
179180                } 
180181            } 
181182        } 
0 commit comments