 				currentTest.tearDown();
 				
 			
-			// If setTimeout() were not used, the synchronous test methods
+			// If the asynchronous Timer were not used, the synchronous test methods
 			// would keep increasing the callstack.
-			setTimeout(runNextMethod, 1);
+			timer.reset();
+			timer.start();
 		}
 		
 		protected function onAsyncMethodCalled(e:Event):void {

	import asunit.textui.ResultPrinter;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.utils.describeType;
	import asunit.errors.AssertionFailedError;
	import asunit.util.ArrayIterator;

			runNextMethod();
		}
		
		protected function runNextMethod(e:TimerEvent = null):void {
			if (completed) {
				onCompleted();
				return;
