2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-05 16:42:32 +03:00

Decorate resolve and reject to clear timeout

This commit is contained in:
pbarbiero
2017-08-12 08:50:21 -05:00
parent db4acb2ec9
commit fa3c6d22f7
+11 -7
View File
@@ -15,10 +15,18 @@ var enhanceError = require('../core/enhanceError');
/*eslint consistent-return:0*/
module.exports = function httpAdapter(config) {
return new Promise(function dispatchHttpRequest(resolve, reject) {
return new Promise(function dispatchHttpRequest(resolvePromise, rejectPromise) {
var timer;
var resolve = function resolve(value) {
clearTimeout(timer);
resolvePromise(value);
};
var reject = function reject(value) {
clearTimeout(timer);
rejectPromise(value);
};
var data = config.data;
var headers = config.headers;
var timer;
// Set User-Agent (required by some servers)
// Only set header if it hasn't been set in config
@@ -130,10 +138,6 @@ module.exports = function httpAdapter(config) {
var req = transport.request(options, function handleResponse(res) {
if (req.aborted) return;
// Response has been received so kill timer that handles request timeout
clearTimeout(timer);
timer = null;
// uncompress the response body transparently if required
var stream = res;
switch (res.headers['content-encoding']) {
@@ -199,7 +203,7 @@ module.exports = function httpAdapter(config) {
});
// Handle request timeout
if (config.timeout && !timer) {
if (config.timeout) {
timer = setTimeout(function handleRequestTimeout() {
req.abort();
reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', req));