 		private function _handleFault(event:FaultEvent = null, asyncToken:AsyncToken = null):void
 		{
 			// stop if asyncToken is no longer relevant
-			if (_pendingInvoke || _asyncToken != asyncToken)
+			if (_invalidated || _asyncToken != asyncToken)
 				return;
 			
 			// no longer busy

			if (_callbackCollection.triggerCounter == _selfTriggeredCount)
				return;
			
			// reset variables and mark as busy
			_pendingInvoke = true;
			_asyncToken = null;
			_result = null;
			_error = null;
			WeaveAPI.ProgressIndicator.addTask(_groupedCallback, this);
		}
		
		private function _groupedCallback():void
		{
			if (!_pendingInvoke)
				return;
			
			_pendingInvoke = false;
			
			try
			{
				var invokeResult:Object = _invoke.apply(null, _invokeParams);
				_asyncToken = invokeResult as AsyncToken;
				if (_asyncToken)
				{

		private function _handleResult(event:ResultEvent = null, asyncToken:AsyncToken = null):void
		{
			// stop if asyncToken is no longer relevant
			if (_invalidated || _asyncToken != asyncToken)
				return;
			
			// no longer busy
