 				return;
 			}
 			
-			var i:int;
-			if (result !== undefined)
-			{
-				for (i = 0; i < handlers.length; i++)
-					(handlers[i] as Handler).onResult(result);
-			}
-			else if (error !== undefined)
-			{
-				for (i = 0; i < handlers.length; i++)
-					(handlers[i] as Handler).onError(error);
+			for (var i:int = 0; i < handlers.length; i++)
+			{
+				var handler:Handler = handlers[i];
+				if (newHandlersOnly && handler.wasCalled)
+					continue;
+				if (result !== undefined)
+					handler.onResult(result);
+				else if (error !== undefined)
+					handler.onError(error);
 			}
 		}
 		

			}
		}
		
		private function callHandlers():void
		{
			if (dependencies.some(dependencyIsBusy))
			{

			next.result = undefined;
			var handler:Handler = new Handler(
				function(result:Object):void {
					handler.wasCalled = true;
					try
					{
						next.setResult(onFulfilled(result));
