anchor.diff:      }
       throw new Exception('The protocol $scheme is not supported.');
     }
  +
  +  Future<void> abort() {
  +    List<Future> results = [];
  +    _transports.values.forEach((trans) {
  +      results.add(trans.abort());
  +    });
  +    return Future.wait(results);
  +  }
   }
  
positive.code:   }
  
    Future<T> invoke<T>(String fullname,
        {List args = null, ClientContext context = null}) async {
      if (context == null) context = new ClientContext();
      context.init(this, T);
      if (args == null) args = [];
  
negative.code: }
  
  class Client {
    static final Map<String, TransportCreator> _creators = {};
    static final Map<String, String> _schemes = {};
    static void register<T extends Transport>(
        String name, TransportCreator<T> creator) {
      var schemes = creator.schemes;
      _creators[name] = creator;
      for (final scheme in schemes) {
        _schemes[scheme] = name;
      }
  