 		}
 		
 		protected function onAsyncMethodCompleted(event:Event = null):void {
-			if (!Async.instance.hasPending) {
+			if (!methodIsExecuting && !Async.instance.hasPending) {
 				onMethodCompleted();
 			}
 		}

		protected var methodsToRun:TestIterator;
		protected var methodTimeoutID:int = -1;
		protected var methodPassed:Boolean = true;

		public function TestRunner() {
			timer = new Timer(0, 1);

				testListener.onTestSuccess(new TestSuccess(currentTest, currentMethod.name));
			}

			// Calling synchronously is faster but keeps adding to the call stack.
			runNextMethod();
			
			// green thread for runNextMethod()
			// This runs much slower in Flash Player 10.1.
			//timer.reset();
			//timer.start();
		}
		
		protected function onAsyncMethodCalled(event:TimeoutCommandEvent):void {
