anchor.diff:          else {
             message = RTCDataChannelMessage(data);
           }
  +        if (this.onMessage != null) {
  +          this.onMessage(message);
  +        }
           _messageController.add(message);
  -        if (this.onMessage != null)
  -          this.onMessage(message);
           break;
       }
     }
  
positive.code:   /// binary data as a [Uint8List] or text data as a [String].
    RTCDataChannelOnMessageCallback onMessage;
  
    final _stateChangeController = StreamController<RTCDataChannelState>.broadcast();
    final _messageController = StreamController<RTCDataChannelMessage>.broadcast();
  
    /// Stream of state change events. Emits the new state on change.
    Stream<RTCDataChannelState> stateChangeStream;
  
negative.code:       case 'dataChannelStateChanged':
          //int dataChannelId = map['id'];
          _state = rtcDataChannelStateForString(map['state']);
          if (this.onDataChannelState != null) {
            this.onDataChannelState(_state);
          }
          _stateChangeController.add(_state);
          break;
        case 'dataChannelReceiveMessage':
          //int dataChannelId = map['id'];
  