 			// The variables countdown and lastPriority are used to avoid running newly-added tasks immediately.
 			// This avoids wasting time on async tasks that do nothing and return early, adding themselves back to the queue.
 
-			var args:Array;
+			var args:Array, args2:Array;
 			var stackTrace:String;
 			var now:int;
 			var allStop:int = _currentFrameStartTime + maxComputationTime;

				if (now > allStop)
					return;
				
				// args: (relevantContext:Object, method:Function, parameters:Array, priority:uint = 0)
				args = queue.shift();
				stackTrace = _stackTraceMap[args];
				

				{
					// TODO: PROFILING: check how long this function takes to execute.
					// if it takes a long time (> 1000 ms), something's wrong...
					args2 = args[2] as Array;
					if (args2 != null && args2.length > 0)
						(args[1] as Function).apply(null, args2);
					else
						(args[1] as Function)();
				}
				
				if (debug_callLater)
