rem: setTimeout (tryAgain, 500); 
add: setTimeout(tryAgain, 500, nesting + 1); 
context: function syncOutputFrame(obj){    const nsIWebProgress = Components.interfaces.nsIWebProgress;    const ALL = nsIWebProgress.NOTIFY_ALL;    const DOCUMENT = nsIWebProgress.NOTIFY_STATE_DOCUMENT;    const WINDOW = nsIWebProgress.NOTIFY_STATE_WINDOW;     var iframe = obj.frame;        function tryAgain ()    {        syncOutputFrame(obj);    };     try    {        if ("contentDocument" in iframe && "webProgress" in iframe)        {            var url = obj.prefs["outputWindowURL"];            iframe.addProgressListener(client.progressListener, WINDOW);            iframe.loadURI(url);        }        else        {            setTimeout(tryAgain, 500);        }    }    catch (ex)    {        dd("caught exception showing session view, will try again later.");        dd(dumpObjectTree(ex) + "\n");        setTimeout (tryAgain, 500);    }}
meta: 1622	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/1622/0918cade427e1856c2e2bcfdefa8b4ea3e457b73/static.js/clean/xul/content/static.js