Попробуйте сделать так:
if (ExternalInterface.available) {
init();
} else {
var timer:Timer = new Timer(100);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
}
private function timerHandler(event:TimerEvent):void {
if (ExternalInterface.available) {
stopTimer(Timer(event.target));
init();
}
if (_tryCounter-- < 0) {
trace('Stop work. Timer runs 50 times and External interface is not available.');
stopTimer(Timer(event.target));
}
}
а в init уже вешать callback