Isso é um "antipadrão diferido"?

Estou achando difícil entender o "antipadrão diferido". Acho que o entendo principalmente, mas não vi um exemplo super simples de que serviço, com uma promessa diferente e um com antipadrão, então imaginei que tentaria fazer o meu, mas vendo como não sou super sabendo disso, eu gostaria de obter alguns esclarecimentos primeiro.

Eu tenho o abaixo em uma fábrica (SomeFactory):

//url = 'data.json';

return {
    getData: function(){
        var deferred = $q.defer();

        $http.get(destinationFactory.url)
            .then(function (response) {

                if (typeof response.data === 'object') {
                    deferred.resolve(response.data);
                } else {
                    return deferred.reject(response.data);
                }
            })

            .catch(function (error) {
            deferred.reject(error);
        });

        return deferred.promise;
    }

O motivo pelo qual estou verificando seu objeto é apenas adicionar uma camada simples de validação ao$http.get()

E abaixo, na minha diretiva:

this.var = SomeFactory.getData()
    .then(function(response) {
        //some variable = response;
    })
    .catch(function(response) {
        //Do error handling here
});

Agora, para meu entendimento, este é um antipadrão. Porque a promessa adiada original pega o erro e simplesmente o engole. Ele não retorna o erro, portanto, quando esse método "getData" é chamado, eu faço outra captura para capturar o erro.

Se esse NÃO é um antipadrão, alguém pode explicar por que ambos exigem uma espécie de "retorno de chamada"? Quando comecei a escrever esta diretiva / fábrica, previ ter que fazer uma promessa adiada em algum lugar, mas não esperava ter que.catch() dos dois lados (ou seja, eu estava pensando que poderia fazer a fábrica retornar a resposta ou o erro se fizesse umaSomeFactory.getData()

questionAnswers(3)

yourAnswerToTheQuestion