Maybe we should consider doing

'error': function(jqXHR, textStatus) {
   callback({'code': jqXHR.status, 'msg': jqXHR.responseText});
}
to provide a more meaningful error?