diff --git a/core/modules/statistics/statistics.es6.js b/core/modules/statistics/statistics.es6.js
index 666536d319..1b4be2c1c0 100644
--- a/core/modules/statistics/statistics.es6.js
+++ b/core/modules/statistics/statistics.es6.js
@@ -4,12 +4,31 @@
  */
 
 (function ($, Drupal, drupalSettings) {
+  Drupal.stats = {
+    recordView() {
+      $.ajax({
+        type: 'POST',
+        cache: false,
+        url: drupalSettings.statistics.url,
+        data: drupalSettings.statistics.data,
+        tryCount: 0,
+        retryLimit: 3,
+        timeout: 30 * 1000,
+        retryDelay: 1,
+        error(xhr, textStatus) {
+          if (textStatus === 'timeout') {
+            this.tryCount = this.tryCount + 1;
+            this.retryDelay = this.retryDelay * (2 * 1000);
+            if (this.tryCount <= this.retryLimit) {
+              return window.setTimeout($.ajax(this), this.retryDelay);
+            }
+          }
+        },
+      });
+    },
+  };
+
   $(document).ready(() => {
-    $.ajax({
-      type: 'POST',
-      cache: false,
-      url: drupalSettings.statistics.url,
-      data: drupalSettings.statistics.data,
-    });
+    Drupal.stats.recordView();
   });
 }(jQuery, Drupal, drupalSettings));
diff --git a/core/modules/statistics/statistics.js b/core/modules/statistics/statistics.js
index 44c1e8e982..fedc088db8 100644
--- a/core/modules/statistics/statistics.js
+++ b/core/modules/statistics/statistics.js
@@ -6,12 +6,31 @@
 **/
 
 (function ($, Drupal, drupalSettings) {
+  Drupal.stats = {
+    recordView: function recordView() {
+      $.ajax({
+        type: 'POST',
+        cache: false,
+        url: drupalSettings.statistics.url,
+        data: drupalSettings.statistics.data,
+        tryCount: 0,
+        retryLimit: 3,
+        timeout: 30 * 1000,
+        retryDelay: 1,
+        error: function error(xhr, textStatus) {
+          if (textStatus === 'timeout') {
+            this.tryCount = this.tryCount + 1;
+            this.retryDelay = this.retryDelay * (2 * 1000);
+            if (this.tryCount <= this.retryLimit) {
+              return window.setTimeout($.ajax(this), this.retryDelay);
+            }
+          }
+        }
+      });
+    }
+  };
+
   $(document).ready(function () {
-    $.ajax({
-      type: 'POST',
-      cache: false,
-      url: drupalSettings.statistics.url,
-      data: drupalSettings.statistics.data
-    });
+    Drupal.stats.recordView();
   });
 })(jQuery, Drupal, drupalSettings);
\ No newline at end of file
