Por que a chamada $ .ajax para dados json aciona o retorno de chamada de erro quando o código de status http é “200 OK”?

Eu tenho o seguinte pedido de ajax:

        jQuery.ajax({
            async: true,
            type: "GET",
            url: url,
            data: data,
            dataType: "json",
            success: function(results){
                currentData = results;
            },
            error: function(xhr, ajaxOptions, thrownError){
                if (xhr.status == 200) {
                    console.debug("Error code 200");
                }
                else {
                    currentData = {};
                    displayAjaxError(xhr.status);
                }
            }
        });

Por alguma razão, o retorno de chamada de erro é chamado de evento, embora o código de status http seja de 200 ie. o pedido está OK. Por que é isso?

questionAnswers(3)

yourAnswerToTheQuestion