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