From 97d2264a3aebd0bf5aeea48cbb7ea11bd7f45fec Mon Sep 17 00:00:00 2001 From: Geoff Schmidt Date: Tue, 18 Feb 2014 15:38:26 -0800 Subject: [PATCH] Fix a "Future resolved more than once" error --- tools/auth.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/auth.js b/tools/auth.js index f2268f364b..395129324f 100644 --- a/tools/auth.js +++ b/tools/auth.js @@ -229,8 +229,13 @@ var currentUsername = function (data) { // username, then ask the server if we have one. var username = null; var fut = new Future(); + var resolved = false; var connection = loggedInAccountsConnection(sessionData.token); connection.call('getUsername', function (err, result) { + if (resolved) + return; + resolved = true; + if (err) { // If anything went wrong, return null just as we would have if // we hadn't bothered to ask the server. @@ -240,12 +245,16 @@ var currentUsername = function (data) { fut['return'](result); }); - setTimeout(inFiber(function () { - fut['return'](null); + var timer = setTimeout(inFiber(function () { + if (! resolved) { + fut['return'](null); + resolved = true; + } }), 5000); username = fut.wait(); connection.close(); + clearTimeout(timer); if (username) { writeMeteorAccountsUsername(username); }