diff --git a/resources/static/shared/network.js b/resources/static/shared/network.js
index 874d81df6ed7530e4933f107382f9bf88dac2eb0..3ee3ad0c0a3cf70eed618cc266655b518c20db1d 100644
--- a/resources/static/shared/network.js
+++ b/resources/static/shared/network.js
@@ -235,7 +235,15 @@ BrowserID.Network = (function() {
           auth_status = false;
           if (onComplete) onComplete();
         },
-        error: onFailure
+        error: function(info, xhr, textStatus) {
+          if (info.network.status === 400) {
+            auth_status = false;
+            if (onComplete) onComplete();
+          }
+          else {
+            onFailure && onFailure(info);
+          }
+        }
       });
     },
 
diff --git a/resources/static/test/qunit/mocks/xhr.js b/resources/static/test/qunit/mocks/xhr.js
index 2652c8cee6ce2478a1f2051a9513454393e4be94..0d84daec0dfb77db227712b2227c6bd08547dddd 100644
--- a/resources/static/test/qunit/mocks/xhr.js
+++ b/resources/static/test/qunit/mocks/xhr.js
@@ -61,7 +61,8 @@ BrowserID.Mocks.xhr = (function() {
       "post /wsapi/complete_user_creation invalid": { success: false },
       "post /wsapi/complete_user_creation ajaxError": undefined,
       "post /wsapi/logout valid": { success: true },
-      "post /wsapi/logout ajaxError": undefined,
+      "post /wsapi/logout not_authenticated": 400,
+      "post /wsapi/logout ajaxError": 401,
       "get /wsapi/have_email?email=registered%40testuser.com valid": { email_known: true },
       "get /wsapi/have_email?email=registered%40testuser.com throttle": { email_known: true },
       "get /wsapi/have_email?email=registered%40testuser.com ajaxError": undefined,
diff --git a/resources/static/test/qunit/shared/network_unit_test.js b/resources/static/test/qunit/shared/network_unit_test.js
index 1ec356c80a08afac5d7532a64834c68e966bdc5f..c9aeb14cb75409d2a289047fa86852e4d08fce08 100644
--- a/resources/static/test/qunit/shared/network_unit_test.js
+++ b/resources/static/test/qunit/shared/network_unit_test.js
@@ -102,10 +102,19 @@
     network.logout(function onSuccess() {
       ok(true, "we can logout");
       start();
-    }, testHelpers.unexpectedFailure);
+    }, testHelpers.unexpectedXHRFailure);
   });
 
 
+  asyncTest("logout with 400 failure - user already logged out", function() {
+    xhr.useResult("not_authenticated");
+
+    network.logout(function onSuccess() {
+      ok(true, "we can logout");
+      start();
+    }, testHelpers.unexpectedXHRFailure);
+  });
+
   asyncTest("logout with XHR failure", function() {
     failureCheck(network.logout);
   });