anchor.diff:  
       void handleNewEvent() {
         if (item1 != null && item2 != null) {
  -        _tryAdd(controller, selector(item1, item2));
  +        _tryRun(() => _tryAdd(controller, selector(item1, item2)), onError);
         }
       }
   
  
positive.code:     var acc = seed;
  
      void handleNewEvent(x) {
        acc = accumulator(acc, x);
        _tryAdd(controller, acc);
      }
  
      input.listen(handleNewEvent,
  
negative.code:       // get and remove the first available items from the two buffers, zip them and return them
        var item1 = buffer1.removeAt(0);
        var item2 = buffer2.removeAt(0);
        _tryRun(() =>_tryAdd(controller, zipper(item1, item2)), onError);
      }
  
      stream1.listen((x) => handleNewEvent(buffer1, buffer2, x),
  