 		 */
 		private function handleCallLater():void
 		{
+			if (UIComponentGlobals.callLaterSuspendCount > 0)
+				return;
+			
 			var args:Array;
 			var stackTrace:String;
 			var i:int;
-
-			// first run the functions that cannot be delayed more than one frame.
+			var now:int;
+			var allStop:int = _currentFrameStartTime + maxComputationTimePerFrame;
+
+			// first run the functions that should be called before anything else.
 			var calls:Array = _priorityCallLaterQueues[WeaveAPI.TASK_PRIORITY_IMMEDIATE] as Array;
 			if (calls.length > 0)
 			{

				}
			}
			
			if (UIComponentGlobals.callLaterSuspendCount > 0)
				return;
//			trace('-------');
			var minPriority:int = WeaveAPI.TASK_PRIORITY_IMMEDIATE + 1;
			var allStop:int = _currentFrameStartTime + maxComputationTimePerFrame;
			var pStart:int = getTimer();
			var pAlloc:int = int(_priorityAllocatedTimes[_activePriority]);
			var pElapsed:int = int(_priorityElapsedTimes[_activePriority]);

				if (debug_callLater)
					DebugTimer.begin();
				
				now = getTimer();
				if (now > pStop || pQueue.length == 0)
				{
					// keep track of elapsed time for this priority
