 				
 				// when there are no more tasks, check later to see if callbacks trigger
 				_dUnbusyTriggerCounts[owner] = getCallbackCollection(owner).triggerCounter;
+				WeaveAPI.StageUtils.startTask(null, unbusyTrigger, WeaveAPI.TASK_PRIORITY_IMMEDIATE);
 				
 				if (debugBusyTasks)
 				{

			if (!dOwner)
				return;
			
			if (!_unbusyTriggerInitialized)
			{
				WeaveAPI.StageUtils.addEventCallback(Event.ENTER_FRAME, null, unbusyTrigger);
				_unbusyTriggerInitialized = true;
			}
			
			delete _d2dTaskOwner.dictionary[taskToken];
			nextOwner: for (var owner:* in dOwner)
			{

		/**
		 * Called the frame after an owner's last busy task is unassigned.
		 * Triggers callbacks if they have not been triggered since then.
		 */
		private function unbusyTrigger(stopTime:int):Number
		{
			var owner:*;
			do {
				if (getTimer() > stopTime)
					return 0;
				
				owner = null;
				for (owner in _dUnbusyTriggerCounts)
				{
