Skip to content

Commit

Permalink
fix: TransformError for transform that returns rejected Promise
Browse files Browse the repository at this point in the history
  • Loading branch information
analog-nico committed Apr 16, 2016
1 parent 296b08d commit 32d988a
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 7 deletions.
16 changes: 11 additions & 5 deletions lib/rp.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,17 @@ function RP$callback(err, response, body) {
} else {

if (isFunction(self._rp_options.transform)) {
try {
self._rp_resolve(self._rp_options.transform(body, response, self._rp_options.resolveWithFullResponse));
} catch (e) {
self._rp_reject(new errors.TransformError(e, self._rp_options, response));
}

(new Bluebird(function (resolve) {
resolve(self._rp_options.transform(body, response, self._rp_options.resolveWithFullResponse)); // transform may return a Promise
}))
.then(function (transformedResponse) {
self._rp_resolve(transformedResponse);
})
.catch(function (err) {
self._rp_reject(new errors.TransformError(err, self._rp_options, response));
});

} else if (self._rp_options.resolveWithFullResponse) {
self._rp_resolve(response);
} else {
Expand Down
18 changes: 16 additions & 2 deletions test/spec/request-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,14 @@ describe('Request-Promise', function () {
}
};

return expect(rp(options)).to.be.rejected;
return rp(options)
.then(function () {
throw new Error('Request should not have been fulfilled!');
})
.catch(function (err) {
expect(err instanceof errors.TransformError).to.eql(true);
expect(err.cause.message).to.eql('Transform rejected!');
});

});

Expand Down Expand Up @@ -497,7 +504,14 @@ describe('Request-Promise', function () {
}
};

return expect(rp(options)).to.be.rejected;
return rp(options)
.then(function () {
throw new Error('Request should not have been fulfilled!');
})
.catch(function (err) {
expect(err instanceof errors.TransformError).to.eql(true);
expect(err.cause.message).to.eql('Transform rejected!');
});

});

Expand Down

0 comments on commit 32d988a

Please sign in to comment.