anchor.diff:    }
   
     Future _blockMouseEvent() async {
  +    final completer = new Completer();
  +    _unBlockMouseEventsCompleter = completer;
       _mouseEventIsBlocked = true;
       print('mouse blocked');
  -    await new Future.delayed(const Duration(seconds: 2));
  -    _mouseEventIsBlocked = false;
  -    print('mouse un-blocked');
  +    new Future.delayed(const Duration(seconds: 2)).then(completer.complete);
  +    await completer.future;
  +    if (_unBlockMouseEventsCompleter.isCompleted) {
  +      _mouseEventIsBlocked = false;
  +      print('mouse un-blocked');
  +    }
     }
   }
positive.code:     _touch = false;
    }
  
    Future _onMouseUp(MouseEvent event) async {
      if (_mouseEventIsBlocked) return;
      print('mouse fired');
      if (_active && !_touch)
  
negative.code:     _active = _touch = true;
    }
  
    void _onTouchEnd(TouchEvent event) {
      print('touch fired');
      if (_active && _touch)
        _controller.add(event);
  