未验证 提交 4fbf0846 编写于 作者: N Nick Uraltsev 提交者: GitHub

Merge pull request #1040 from pbarbiero/pbarbiero/improved-timeout-handling

Decorate resolve and reject to clear timeout in all cases
......@@ -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
......@@ -141,10 +149,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']) {
......@@ -210,7 +214,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));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册