docs: function(isTimeout){
  			// The request was aborted, clear the interval and decrement jQuery.active
  			if (xhr.readyState == 0) {
  				if (ival) {
  					// clear poll interval
  					clearInterval(ival);
  					ival = null;
  					// Handle the global AJAX counter
  					if ( s.global && ! --jQuery.active )
  						jQuery.event.trigger( "ajaxStop" );
  				}
  			// The transfer is complete and the data is available, or the request timed out
  			} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
  				requestDone = true;
  
  				// clear poll interval
  				if (ival) {
  					clearInterval(ival);
  					ival = null;
  				}
  
  				status = isTimeout == "timeout" ? "timeout" :
  					!jQuery.httpSuccess( xhr ) ? "error" :
  					s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
  					"success";
  
  				if ( status == "success" ) {
  					// Watch for, and catch, XML document parse errors
  					try {
  						// process the data (runs the xml through httpData regardless of callback)
  						data = jQuery.httpData( xhr, s.dataType, s );
  					} catch(e) {
  						status = "parsererror";
  					}
  				}
  
  				// Make sure that the request was successful or notmodified
  				if ( status == "success" ) {
  					// Cache Last-Modified header, if ifModified mode.
  					var modRes;
  					try {
  						modRes = xhr.getResponseHeader("Last-Modified");
  					} catch(e) {} // swallow exception thrown by FF if header is not available
  
  					if ( s.ifModified && modRes )
  						jQuery.lastModified[s.url] = modRes;
  
  					// JSONP handles its own success callback
  					if ( !jsonp )
  						success();
  				} else
  					jQuery.handleError(s, xhr, status);
  
  				// Fire the complete handlers
  				complete();
  
  				if ( isTimeout )
  					xhr.abort();
  
  				// Stop memory leaks
  				if ( s.async )
  					xhr = null;
  			}
  		}