在bluebird promisified请求中捕获HTTP错误

时间:2016-04-13 11:53:31

标签: node.js promise bluebird node-request

bluebird.promisify模块周围使用request,正在吞下所有HTTP错误(非200状态)。

考虑以下设想的例子:

var bluebird = require('bluebird');
var request = bluebird.promisify(require("request")); 

function makeRequest(options) {
    return request(options)
        .then(function(response) {
            return response.body;
        })
        .catch(function(error) {
            return error;
        })
        .error(function(error) {
            return error;
        })
}

对于成功请求,解决方案按预期工作:

makeRequest({...}).then(function(body) {
    console.log(body);
});

对于错误的HTTP请求(例如404,500状态等),承诺永远不会被拒绝,并且catcherror块都不会被执行。

为什么会这样?

0 个答案:

没有答案