anchor.diff:      _inflights[code] = val;
       return code;
     }
  +
  +  int _goFlight(StreamController<dynamic> cntl, dynamic data(int code)) {
  +    final code = _flightCode(cntl);
  +    try {
  +      _ws.add(JSON.encode(data(code)));
  +      return code;
  +    } catch (_) {
  +      _inflights.remove(code);
  +      rethrow;
  +    }
  +  }
   }
  
positive.code:   ///     wamp.unregister(your_rpc_id);
    Future<Null> unregister(WampRegistration reg) {
      final cntl = new StreamController<int>();
      final code = _flightCode(cntl);
      _ws.add(JSON.encode([WampCode.unregister, code, reg.id]));
      return cntl.stream.last.then((dynamic _) {
        _registrations.remove(reg.id);
        return null;
  
negative.code:   Future<WampRegistration> register(String uri, WampProcedure proc,
        [Map options = const <String, dynamic>{}]) {
      final cntl = new StreamController<int>();
      _goFlight(cntl, (code) => [WampCode.register, code, options, uri]);
      return cntl.stream.last.then((regid) {
        _registrations[regid] = proc;
        return new WampRegistration(regid);
  