rem: var http = this._xhrObj(); 
add: var http = this._xhrObj(); 
context: 	dojo._getText = function(uri, async_cb, fail_ok){		// summary: Read the contents of the specified uri and return those contents.		// uri:		//		A relative or absolute uri. If absolute, it still must be in		//		the same "domain" as we are.		// async_cb:		//		If not specified, load synchronously. If specified, load		//		asynchronously, and use async_cb as the progress handler which		//		takes the xmlhttp object as its argument. If async_cb, this		//		function returns null.		// fail_ok:		//		Default false. If fail_ok and !async_cb and loading fails,		//		return null instead of throwing.		// need to block async callbacks from snatching this thread as the result		// of an async callback might call another sync XHR, this hangs khtml forever		// hostenv._blockAsync must also be checked in BrowserIO's watchInFlight()		// NOTE: must be declared before scope switches ie. this._xhrObj()		if(!async_cb){ this._blockAsync = true; }		var http = this._xhrObj();		function isDocumentOk(http){			var stat = http["status"];			// allow a 304 use cache, needed in konq (is this compliant with			// the http spec?)			return Boolean((!stat)||((200 <= stat)&&(300 > stat))||(stat==304));		}		if(async_cb){			var _this = this, timer = null, gbl = dojo.global();			http.onreadystatechange = function(){				if(timer){ gbl.clearTimeout(timer); timer = null; }				if(_this._blockAsync){					timer = gbl.setTimeout(function(){						http.onreadystatechange.apply(this);					}, 10);				}else{					if(4==http.readyState){						if(isDocumentOk(http)){							// console.debug("LOADED URI: "+uri);							async_cb(http.responseText);						}					}				}			}		}		http.open('GET', uri, async_cb ? true : false);		try{			http.send(null);			if(async_cb){				return null;			}			if(!isDocumentOk(http)){				var err = Error("Unable to load "+uri+" status:"+ http.status);				err.status = http.status;				err.responseText = http.responseText;				throw err;			}		}catch(e){			this._blockAsync = false;			if((fail_ok)&&(!async_cb)){				return null;			}else{				throw e;			}		}		this._blockAsync = false;		return http.responseText; // String	}
meta: 4497	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/4497/398bdd09f2eb9379bbf1df25ea5084841f8ce399/hostenv_browser.js/buggy/_base/_loader/hostenv_browser.js