anchor.diff:      var item1;
       var item2;
   
  -    void handleNewEvent() {
  +    void handleNewValue() {
         if (item1 != null && item2 != null) {
           _tryRun(() => _tryAdd(controller, selector(item1, item2)), onError);
         }
  
positive.code: 
      stream1.listen((x) {
          item1 = x;
          handleNewEvent();
        },
        onError : onError,
        onDone  : completer1.complete);
      stream2.listen((x) {
          item2 = x;
          handleNewEvent();
        },
        onError : onError,
        onDone  : completer2.complete);
  
negative.code: 
      var maximum;
  
      void handleNewValue(x) => _tryRun(() {
        if (maximum == null || compare(maximum, x) < 0) {
          maximum = x;
        }
      }, onError);
  
      input.listen(handleNewValue,
                   onError : onError,
                   onDone  : () {
                     if (!completer.isCompleted) completer.complete(maximum);
  