From afeacdc7df181a592bea2109497400427e6471be Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sat, 21 Sep 2019 10:19:22 +0200 Subject: [PATCH] luci-base: luci.js: improve XHR issue diagnostics Differentiate between request timeouts and other error reasons. Signed-off-by: Jo-Philipp Wich --- modules/luci-base/htdocs/luci-static/resources/luci.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/luci-base/htdocs/luci-static/resources/luci.js b/modules/luci-base/htdocs/luci-static/resources/luci.js index af2b179ce3..1d349ebc17 100644 --- a/modules/luci-base/htdocs/luci-static/resources/luci.js +++ b/modules/luci-base/htdocs/luci-static/resources/luci.js @@ -399,17 +399,21 @@ }, handleReadyStateChange: function(resolveFn, rejectFn, ev) { - var xhr = this.xhr; + var xhr = this.xhr, + duration = Date.now() - this.start; if (xhr.readyState !== 4) return; if (xhr.status === 0 && xhr.statusText === '') { - rejectFn.call(this, new Error('XHR request aborted by browser')); + if (duration >= this.timeout) + rejectFn.call(this, new Error('XHR request timed out')); + else + rejectFn.call(this, new Error('XHR request aborted by browser')); } else { var response = new Response( - xhr, xhr.responseURL || this.url, Date.now() - this.start); + xhr, xhr.responseURL || this.url, duration); Promise.all(Request.interceptors.map(function(fn) { return fn(response) })) .then(resolveFn.bind(this, response)) -- 2.30.2