anchor.diff:      await for (final request in _requests.stream) {
         _send(request.toJson());
   
  -      sendSignal(status) {
  +      request.signal?._send.stream.listen((status) {
           _send({'kind': 'signal', 'status': status});
  -      }
  +      });
   
  -      request.signals.forEach(sendSignal);
  -      request.signal?._sendSignal = sendSignal;
  -
  -      bool done = false;
  -      while (!done) {
  +      bool completed = false;
  +      while (!completed) {
           final response = await _responses.next;
           developer.log('RECV', name: 'rpc', error: jsonEncode(response));
           response.map(
             signal: (signal) {
  -            request.signal?._controller.sink.add(signal);
  +            request.signal?._recv.sink.add(signal);
             },
             success: (success) {
               request.completer.complete(success.body);
  -            done = true;
  +            completed = true;
             },
             error: (error) {
               request.completer.completeError(error);
  -            done = true;
  +            completed = true;
             },
           );
         }
   
  -      request.signal?._sendSignal = null;
  -      request.signal?._controller.close();
  +      request.signal?._close();
       }
     }
   }
  
positive.code: import 'models.dart';
  
  class Signaler {
    final _controller = StreamController<Signal>();
    void Function(String)? _sendSignal;
  
    Stream<Signal> get signals => _controller.stream;
  
    void cancel() {
      final sendSignal = _sendSignal;
      if (sendSignal == null) {
        throw Exception('Signaler not attached to any request!');
      }
      sendSignal('cancel');
    }
  }
  
  
negative.code:   final List<String> target;
    final Map body;
    final Signaler? signal;
    final Completer<Map<String, dynamic>> completer = Completer();
  
    _Request(this.action, this.target, this.body, this.signal);
  
    Map<String, dynamic> toJson() => {
          'kind': 'command',
  