Для начала читаем документацию тут:
http://www.ecma-international.org/pu...s/Ecma-357.htm
Это то, что касается E4X.
Дальше читаем про синхронное и асинхронное выполнение кода тут:
http://en.wikipedia.org/wiki/Asynchronous_I/O
(Asynchronous Input/Output processing)
В двух словах: вы не вызываете функцию, в которой обрабатывается ХМЛ, она вызывается другим, инициированом вами процессом, но, этот процесс выполняется независимо от выполнения основного потока (вашего кода), это значит, что эта функция может, и скорее всего будет вызвана после выполнения блока кода, который ее описывает, возможно, много позже. Поэтому значение переменной, присваемое функцией, будет присвоено тогда, когда эта функция будет вызвана, а не тогда, когда вы захотите узнать, какое значение ей могло быть / может быть / может быть будет присвоено.