in lib/src/peer.dart [120:148]
Future listen() {
_client.listen();
_server.listen();
_channel.stream.listen((message) {
if (message is Map) {
if (message.containsKey('result') || message.containsKey('error')) {
_clientIncomingForwarder.add(message);
} else {
_serverIncomingForwarder.add(message);
}
} else if (message is List &&
message.isNotEmpty &&
message.first is Map) {
if (message.first.containsKey('result') ||
message.first.containsKey('error')) {
_clientIncomingForwarder.add(message);
} else {
_serverIncomingForwarder.add(message);
}
} else {
// Non-Map and -List messages are ill-formed, so we pass them to the
// server since it knows how to send error responses.
_serverIncomingForwarder.add(message);
}
}, onError: (error, stackTrace) {
_serverIncomingForwarder.addError(error, stackTrace);
}, onDone: close);
return done;
}