diff --git a/libebackend/e-source-registry-server.c b/libebackend/e-source-registry-server.c
index 33a8afe..e1eb0d0 100644
--- a/libebackend/e-source-registry-server.c
+++ b/libebackend/e-source-registry-server.c
 	auth_request_unref (request);
 }
 
+static gboolean
+call_authentication_session_execute_cb (gpointer user_data)
+{
+	AuthRequest *request = user_data;
+
+	g_return_val_if_fail (request != NULL, FALSE);
+
+	e_authentication_session_execute (
+		request->session,
+		G_PRIORITY_DEFAULT,
+		request->cancellable,
+		source_registry_server_auth_session_cb,
+		request);  /* takes ownership */
+
+	return FALSE;
+}
+
 static void
 source_registry_server_maybe_start_auth_session (ESourceRegistryServer *server,
                                                  const gchar *uid)
@@ -543,14 +565,8 @@ source_registry_server_maybe_start_auth_session (ESourceRegistryServer *server,
 	/* Execute the new active auth session.  This signals it to
 	 * respond with a cached secret in the keyring if it can, or
 	 * else show an authentication prompt and wait for input. */
-	if (request != NULL) {
-		e_authentication_session_execute (
-			request->session,
-			G_PRIORITY_DEFAULT,
-			request->cancellable,
-			source_registry_server_auth_session_cb,
-			request);  /* takes ownership */
-	}
+	if (request != NULL)
+		g_timeout_add (1, call_authentication_session_execute_cb, request);
 }
 
 static void
