anchor.diff:    //---------------------------------
     
     Completer _invocationFrameCompleter;
  +  Timer _invocationTimer;
  +  Future _invocationFuture;
     
     Future get invocationFrame {
  -    if (_invocationFrameCompleter != null) return _invocationFrameCompleter.future;
  -    
  -    _invocationFrameCompleter = new Completer();
  -    
  -    new Timer(
  -      new Duration(milliseconds: (_currentPeformance < 40.0) ? 40 : (_currentPeformance > 120.0) ? 120 : _currentPeformance.toInt()),
  -      _invocationFrameCompleter.complete
  -    );
  -    
  -    final Future result = _invocationFrameCompleter.future;
  -    
  -    result.whenComplete(() => _invocationFrameCompleter = null);
  -    
  -    return result;
  +    if (_invocationTimer == null || !_invocationTimer.isActive) {
  +      _invocationFrameCompleter = new Completer();
  +      
  +      _invocationTimer = new Timer(
  +        new Duration(milliseconds: (_currentPeformance > 120.0) ? 120 : _currentPeformance.ceil()),
  +        _invocationFrameCompleter.complete
  +      );
  +      
  +      _invocationFuture = _invocationFrameCompleter.future;
  +    }
  +    
  +    return _invocationFuture;
     }
     
     //---------------------------------
  
positive.code:   //---------------------------------
    
    Completer _layoutFrameCompleter;
    
    Future get layoutFrame {
      if (_layoutFrameCompleter != null) return _layoutFrameCompleter.future;
      
      _layoutFrameCompleter = new Completer();
      
  
negative.code:   //---------------------------------
    
    Completer _animationFrameCompleter;
    Future _animationFrameFuture;
    
    Future get animationFrame {
      if (_animationFrameCompleter != null) return _animationFrameFuture;
      
      _animationFrameCompleter = new Completer();
      
  