@@ -375,22 +375,28 @@ private void ProcessReceivedMessage(byte[]? data)
375375 switch ( type )
376376 {
377377 case "success" :
378+ if ( id is null ) throw new BiDiException ( "The remote end responded with 'success' message type, but missed required 'id' property." ) ;
379+
378380 var successCommand = _pendingCommands [ id . Value ] ;
379- var messageSuccess = JsonSerializer . Deserialize ( ref resultReader , successCommand . Item1 . ResultType , _jsonSerializerContext ) ;
381+ var messageSuccess = JsonSerializer . Deserialize ( ref resultReader , successCommand . Item1 . ResultType , _jsonSerializerContext ) ! ;
380382 successCommand . Item2 . SetResult ( messageSuccess ) ;
381383 _pendingCommands . TryRemove ( id . Value , out _ ) ;
382384 break ;
383385
384386 case "event" :
387+ if ( method is null ) throw new BiDiException ( "The remote end responded with 'event' message type, but missed required 'method' property." ) ;
388+
385389 var eventType = _eventTypesMap [ method ] ;
386390
387- var eventArgs = ( EventArgs ) JsonSerializer . Deserialize ( ref paramsReader , eventType , _jsonSerializerContext ) ;
391+ var eventArgs = ( EventArgs ) JsonSerializer . Deserialize ( ref paramsReader , eventType , _jsonSerializerContext ) ! ;
388392
389393 var messageEvent = new MessageEvent ( method , eventArgs ) ;
390394 _pendingEvents . Add ( messageEvent ) ;
391395 break ;
392396
393397 case "error" :
398+ if ( id is null ) throw new BiDiException ( "The remote end responded with 'error' message type, but missed required 'id' property." ) ;
399+
394400 var messageError = new MessageError ( id . Value ) { Error = error , Message = message } ;
395401 var errorCommand = _pendingCommands [ messageError . Id ] ;
396402 errorCommand . Item2 . SetException ( new BiDiException ( $ "{ messageError . Error } : { messageError . Message } ") ) ;
0 commit comments