在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状态等),承诺永远不会被拒绝,并且catch
或error
块都不会被执行。
为什么会这样?