anchor.diff:      Map options = const <String, dynamic>{},
     ]) {
       final cntl = new StreamController<Null>();
  -    final code = _flightCode(cntl);
  -    _ws.add(
  -        JSON.encode([WampCode.publish, code, options, topic, args, params]));
  +    final code = _goFlight(
  +        cntl, (code) => [WampCode.publish, code, options, topic, args, params]);
   
       final dynamic acknowledge = options[_keyAcknowledge];
       if (acknowledge is bool && acknowledge) {
  
positive.code:       Map<String, dynamic> params = const <String, dynamic>{},
        Map options = const <String, dynamic>{}]) {
      final cntl = new StreamController<WampArgs>();
      final code = _flightCode(cntl);
      _ws.add(JSON.encode([WampCode.call, code, options, uri, args, params]));
      return cntl.stream.last;
    }
  
  
negative.code:   ///     wamp.unregister(your_rpc_id);
    Future<Null> unregister(WampRegistration reg) {
      final cntl = new StreamController<int>();
      _goFlight(cntl, (code) => [WampCode.unregister, code, reg.id]);
      return cntl.stream.last.then((dynamic _) {
        _registrations.remove(reg.id);
        return null;
  