add:  dfd.cancel(); 
context: 	var _watchInFlight = function(){		//summary: 		//		internal method that checks each inflight XMLHttpRequest to see		//		if it has completed or if the timeout situation applies.				var now = (new Date()).getTime();		// make sure sync calls stay thread safe, if this callback is called		// during a sync call and this results in another sync call before the		// first sync call ends the browser hangs		if(!dojo._blockAsync){			dojo.forEach(_inFlight, function(tif, arrIdx){				if(!tif){ return; }				var dfd = tif.dfd;				try{					if(!dfd || dfd.canceled || !tif.validCheck(dfd)){						_inFlight.splice(arrIdx, 1); return;					}					if(tif.ioCheck(dfd)){						_inFlight.splice(arrIdx, 1); // clean refs						tif.resHandle(dfd);					}else if(dfd.startTime){						//did we timeout?						if(dfd.startTime + (dfd.ioArgs.args.timeout||0) < now){							//Stop the request.							dfd.cancel();							_inFlight.splice(arrIdx, 1); // clean refs							var err = new Error("timeout exceeded");							err.dojoType = "timeout";							dfd.errback(err);						}					}				}catch(e){					// FIXME: make sure we errback!					console.debug(e);					dfd.errback(new Error("_watchInFlightError!"));				}			});		}		if(!_inFlight.length){			clearInterval(_inFlightIntvl);			_inFlightIntvl = null;			return;		}	}
meta: 4497	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/4497/4167c0bc08a4621cce8551ca07d35004da9750d5/xhr.js/clean/_base/xhr.js