Hai provato così?

public function ReadData():Array{
var XmlData:XML = new XML();
XmlData.ignoreWhite = true;
XmlData.load(XmlUrl);
XmlData.onLoad = function(success){
if(success){
//qua eseguo tutto il codice per la lettura dell'xml
}
return XmlDataA;
}

};

Cioè spostando il return praticamente dopo la lettura del codice Xml ?
In teoria così dovrebbe essere eseguito appunto quando l'xml è stato letto, mentre prima era eseguito "troppo presto"