anchor.diff:        [bool isImplicitArray = false]) {
       final parser = new JsonStreamingParser._(isImplicitArray);
       final result = new StreamController();
  -    parser._subscription = symbolBuffer.listen((ch) => parser._handleToken(ch, result),
  -        onDone: () => parser._handleEof(result));
  +    parser._subscription = symbolBuffer.listen(
  +        (ch) => parser._handleToken(ch, result),
  +        onDone: () => parser._handleEof(result), onError: (err) {
  +      result.addError(err);
  +      parser._subParser = _SubParser.errored;
  +    });
   
       result.onPause = parser._subscription.pause;
       result.onResume = parser._subscription.resume;
  
positive.code:     implements StreamTransformer<int, JsonStreamingEvent> {
    final bool isImplicitArray;
    Stream<JsonStreamingEvent> bind(Stream<int> inputStream) =>
      JsonStreamingParser.streamTransform(inputStream, isImplicitArray);
    const JsonStreamTransformer([bool this.isImplicitArray = false]);
  }
  
  
negative.code:           JsonStreamingEventType eventType) =>
        new JsonStreamingEvent(object, currentPath, currentContext, eventType);
  
    void _parserAssertNotReached(
        String message, StreamController<JsonStreamingEvent> outputController) {
      outputController.addError(new StateError(message));
      _subParser = _SubParser.errored;
    }
  
    void _parserAssertNotReachedSync(String message) {
      throw new StateError(message);
    }
  
    JsonStreamingEvent _makeFinalSymbol(value) {
      if (_weAreInObject) {
  