> errorThrown is for JavaScript errors (think try/catch). 40X responses > are not "thrown", they are just errors returned from the server and > you can get details from the xhr (ie: xhr.statusText).
To elaborate slightly, the server could return an XML document with a 200 status code. But if the browser can not parse the document a parseerror will occur and jQuery's error handler will be invoked. In that case the errorThrown argument will not be undefined.