diff --git a/browserid/static/dialog/resources/user.js b/browserid/static/dialog/resources/user.js
index 75a3d51a8bb7810dac8f5f3e2efc2f88095eb845..468c0519b54f58ee2c1ff5e0d5b49d9e03c223fd 100644
--- a/browserid/static/dialog/resources/user.js
+++ b/browserid/static/dialog/resources/user.js
@@ -120,7 +120,7 @@ BrowserID.User = (function() {
           setTimeout(poll, 3000);
         }
         else if (onFailure) {
-            onFailure();
+            onFailure(status);
         }
       });
     };
diff --git a/browserid/static/dialog/test/qunit/user_unit_test.js b/browserid/static/dialog/test/qunit/user_unit_test.js
index 9d2ea978fbf19616199d93b2bbd97c5f08a8d213..019f05f6ea4e708066c5bb0473e4c369019b626d 100644
--- a/browserid/static/dialog/test/qunit/user_unit_test.js
+++ b/browserid/static/dialog/test/qunit/user_unit_test.js
@@ -227,26 +227,49 @@ steal.plugins("jquery", "funcunit/qunit").then("/dialog/resources/user", functio
     stop();
   });
 
-  test("waitForUserValidation with success response", function() {
-    lib.waitForUserValidation("testuser@testuser.com", function() {
-      ok(true);
+  /**
+   * The next three tests use the mock network harness.  The tests are testing 
+   * the polling action and whether `waitForUserValidation` reacts as expected
+   * to the various network responses.  The network harness simulates multiple 
+   * calls to `checkUserRegistration`, attempting to simulate real use 
+   * interaction to verify the email address, the first call to 
+   * `checkUserRegistration` returns `pending`, the second returns the value 
+   * stored in `registrationResponse`.
+   */
+  test("waitForUserValidation with `complete` response", function() {
+    lib.waitForUserValidation("testuser@testuser.com", function(status) {
+      equal(status, "complete", "complete response expected");
       start();
     }, failure("waitForUserValidation failure"));
 
     stop();
   });
 
-  test("waitForUserValidation with mustAuth response", function() {
+  test("waitForUserValidation with `mustAuth` response", function() {
     registrationResponse = "mustAuth";
 
-    lib.waitForUserValidation("testuser@testuser.com", function() {
-      ok(true);
+    lib.waitForUserValidation("testuser@testuser.com", function(status) {
+      equal(status, "mustAuth", "mustAuth response expected");
       start();
     }, failure("waitForUserValidation failure"));
 
     stop();
   });
 
+  test("waitForUserValidation with `noRegistration` response", function() {
+    registrationResponse = "noRegistration";
+
+    lib.waitForUserValidation("baduser@testuser.com", function(status) {
+      ok(false, "not expecting success")
+      start();
+    }, function(status) {
+      ok(status, "noRegistration", "noRegistration response causes failure");
+      start();
+    });
+
+    stop();
+  });
+
   test("setPassword", function() {
     lib.setPassword("password", function() {
       // XXX fill this in.
@@ -417,15 +440,48 @@ steal.plugins("jquery", "funcunit/qunit").then("/dialog/resources/user", functio
   });
 
 
-  test("waitForEmailValidation", function() {
-    lib.waitForEmailValidation("testemail@testemail.com", function() {
-      ok(true);
+  /**
+   * The next three tests use the mock network harness.  The tests are testing 
+   * the polling action and whether `waitForEmailValidation` reacts as expected
+   * to the various network responses.  The network harness simulates multiple 
+   * calls to `checkEmailRegistration`, attempting to simulate real use 
+   * interaction to verify the email address, the first call to 
+   * `checkEmailRegistration` returns `pending`, the second returns the value 
+   * stored in `registrationResponse`.
+   */
+ test("waitForEmailValidation `complete` response", function() {
+    lib.waitForEmailValidation("testemail@testemail.com", function(status) {
+      equal(status, "complete", "complete response expected");
+      start();
+    }, failure("waitForEmailValidation failure"));
+
+    stop();
+  });
+
+  test("waitForEmailValidation `mustAuth` response", function() {
+    registrationResponse = "mustAuth";
+
+    lib.waitForEmailValidation("testemail@testemail.com", function(status) {
+      equal(status, "mustAuth", "mustAuth response expected");
       start();
     }, failure("waitForEmailValidation failure"));
 
     stop();
   });
 
+  test("waitForEmailValidation with `noRegistration` response", function() {
+    registrationResponse = "noRegistration";
+
+    lib.waitForEmailValidation("baduser@testuser.com", function(status) {
+      ok(false, "not expecting success")
+      start();
+    }, function(status) {
+      ok(status, "noRegistration", "noRegistration response causes failure");
+      start();
+    });
+
+    stop();
+  });
 
   test("syncEmailKeypair with successful sync", function() {
     syncValid = true;