Посмотрите, не вызывается ли функция (выше по стеку) из каких-нибудь биндинг-выражений. Биндинги имеют два неприятных свойства - игнорировать ошибки и повторно вызывать функцию, если она завершилась с ошибкой в прошлый раз.
А вообще, за такой код надо из зарплаты вычитать

Код AS3:
override public function execute(event:CairngormEvent):void
{
var delegate : TargetValueDelegate = new TargetValueDelegate(this);
targetValueEvent = event as TargetValueEvent;
//try
//{
//targetValueEvent = TargetValueEvent(event);
//nextEvent = targetValueEvent.nextChainedEvent;
//}
//catch(err:Error)
//{
//targetValueEvent=null;
//}
if (targetValueEvent)
//if(targetValueEvent!=null)
{
// Порочная логика, никогда так не делайте, подпишите по слушателю на событие,
// либо используйте state, либо strategy. Старайтесь избегать switch, тем более,
// что тут он совершенно ни к чему и только усложняет тестирование.
myRequest = event.type;
switch(event.type)
{
case TargetValueControl.LOAD_TARGET_VALUE:
delegate.loadTargetValue();
break;
case TargetValueControl.ADD_TARGET_VALUE:
delegate.addTargetValue(targetValueEvent.targetValueOb);
break;
case TargetValueControl.EDIT_TARGET_VALUE:
delegate.editTargetValue(targetValueEvent.targetValueOb);
break;
case TargetValueControl.REMOVE_TARGET_VALUE:
delegate.removeTargetValue(targetValueEvent.targetValueOb)
}
}
}