 				{
 					// TODO: PROFILING: check how long this function takes to execute.
 					// if it takes a long time (> 1000 ms), something's wrong...
-					
-					(args[1] as Function).apply(null, args[2]);
+					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)

			// 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 stackTrace:String;
			var now:int;
			var allStop:int = _currentFrameStartTime + maxComputationTime;

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