Como lançar chamadas jQuery $ .ajax para promessas do Bluebird sem o padrão anit adiado

No momento, uso promessa.deferida em um arquivo principal. Isso me permite resolver promessas em um local central. Eu tenho lido que posso estar usando um anti-padrão e quero entender por que isso é ruim.

então na minhacore.js arquivo eu tenho funções como esta:

var getMyLocation = function(location) {    
    var promiseResolver = Promise.defer();

    $.get('some/rest/api/' + location)
        .then(function(reponse) {
            promiseResolver.resolve(response);
        )}
        .catch(function(error) {
            promiseResolver.reject(error);
        });

     return promiseResolver.promise;
}

E então na minhagetLocation.js arquivo Eu tenho o seguinte:

var core = require('core');
var location = core.getMyLocation('Petersburg')
    .then(function(response) {
        // do something with data
    }).catch(throw error);

Depois de ler os documentos do Bluebird e muitas postagens no blog sobre o antipadrão diferido, pergunto-me se esse padrão é prático. Eu poderia mudar isso para o seguinte:

core.js

var getMyLocation = function(location) {
    var jqXHR = $.get('some/rest/api/' + location);
    return Promise.resolve(jqXHR)
        .catch(TimeoutError, CancellationError, function(e) {
            jqXHR.abort();
            // Don't swallow it
            throw e;
        });

getLocation.js

var location = core.getMyLocation('Petersburg')
    .then(function(response) {
        // do something
    })
    .catch(function(error) {
        throw new Error();
    });

Acho que estou confuso com a melhor maneira de ter uma biblioteca central que lide com solicitações xhr usando jquery para as chamadas, mas Bluebird para as promessas.

questionAnswers(2)

yourAnswerToTheQuestion