diff --git a/resources/static/dialog/controllers/primary_user_provisioned.js b/resources/static/dialog/controllers/primary_user_provisioned.js
index 5e12f8c67626297f7b2b0a2d63e2e83753b292a6..e5722a0a58da144f5d30a328c66d314bae9bad9e 100644
--- a/resources/static/dialog/controllers/primary_user_provisioned.js
+++ b/resources/static/dialog/controllers/primary_user_provisioned.js
@@ -22,7 +22,8 @@ BrowserID.Modules.PrimaryUserProvisioned = (function() {
           addEmailToCurrentUser = !!options.add,
           complete = function(status) {
             options.ready && options.ready(status || false);
-          };
+          },
+          delay = options.complete_delay || 3000;
 
       self.checkRequired(options, "email", "assertion");
 
@@ -31,7 +32,9 @@ BrowserID.Modules.PrimaryUserProvisioned = (function() {
       if(addEmailToCurrentUser) {
         network.addEmailWithAssertion(assertion, function(status) {
           if(status) {
-            self.publish("primary_user_ready", options);
+            setTimeout(function() {
+              self.publish("primary_user_ready", options);
+            }, delay);
           }
           else {
             self.getErrorDialog(errors.addEmailWithAssertion, complete)();
@@ -41,7 +44,9 @@ BrowserID.Modules.PrimaryUserProvisioned = (function() {
       else {
         network.authenticateWithAssertion(email, assertion, function(status) {
           if(status) {
-            self.publish("primary_user_ready", options);
+            setTimeout(function() {
+              self.publish("primary_user_ready", options);
+            }, delay);
           }
           else {
             self.getErrorDialog(errors.authenticateWithAssertion, complete)();
diff --git a/resources/static/test/cases/controllers/primary_user_provisioned.js b/resources/static/test/cases/controllers/primary_user_provisioned.js
index bdd5f60cf6b446c886528e9038eda876d36d1294..fb228c05c1ed1a9a2e25648e2cc88547fc53989c 100644
--- a/resources/static/test/cases/controllers/primary_user_provisioned.js
+++ b/resources/static/test/cases/controllers/primary_user_provisioned.js
@@ -37,6 +37,8 @@
 
   function createController(config) {
     controller = bid.Modules.PrimaryUserProvisioned.create();
+    config = config || {};
+    config.complete_delay = 1;
     controller.start(config);
   }