AngularJS: ¿por qué promesas ($ q) con $ http?

Estoy aprendiendo AngularJS después de convertirme de jQuery durante unos años. Y algunos bits son mucho más intuitivos. Algunos no tanto :).

Estoy tratando de entender el uso de promesas, particularmente $ q en uso con $ http y no parece haber demasiada información sobre estos dos combinados que pueda encontrar.

¿Por qué usaría promesas en lugar de la devolución de llamada de éxito / error? Ambos hacen uso de devoluciones de llamada en realidad, entonces, ¿por qué una promesa se considera mejor? P.ej. Podría establecer unget(...) funcionan como sigue:

function get(url, success, error) {
    success = success || function () {};
    error = error || function () {};

    $http.get(url)
        .success(function (data) {
            success(data);
        })
        .error(function (error) {
            error(error);
        });
}

get('http://myservice.com/JSON/',
    function () {
        // do something with data
    },
    function () {
        // display an error
    }
);

Lo cual es bueno (?) Porque me da control total sobre lo que está sucediendo. Si llamoget(...) entonces puedo controlar cualquier éxito / error donde seaget se llama.

Si convierto esto para usar promesas, entonces obtengo:

function get(url) {
    return $http.get(url)
        .then(function (data) {
            return data;
        },
        function (error) {
            return error;
        });
}

get('http://myservice.com/JSON/')
    .then(function (data) {
        // do something with data
    });
    // cannot handle my errors?

Lo cual está condensado, estoy de acuerdo; tampoco tenemos que preocuparnos explícitamente por la devolución de llamada de éxito / error, pero parece que he perdido el control sobre mi devolución de llamada de error para comenzar, porque no puedo configurar una segunda devolución de llamada para manejar un error.

Lo que significa que si uso esta función en un servicio que pueden usar varios controladores, entonces no puedo actualizar la IU para alertar al usuario de un error.

¿Me estoy perdiendo de algo? ¿Hay alguna razón por la cual se prefieren las promesas? No puedo encontrar un ejemplo de por qué.

Respuestas a la pregunta(2)

Su respuesta a la pregunta