function generateBadge(username) { check.verify.unemptyString(username, 'expected username'); if (badge[username] && badge[username].generating) { return badge[username].generating; } ensureSpace(); if (!badge[username]) { badge[username] = {}; } // just keep promise in the image's placeholder badge[username].generating = badge(username) .then(function (filename) { check.verify.unemptyString(filename, 'expected generated badge filename'); var image = fs.readFileSync(filename); badges[username] = { image: image, date: new moment() }; fs.unlinkSync(filename); return image; }); return badge[username].generating; }
function generateBadge(username) { check.verify.unemptyString(username, 'expected username'); if (badge[username] && badge[username].generating) { return badge[username].generating; } ensureSpace(); if (!badge[username]) { badge[username] = {}; } badge[username].generating = badge(username) .then(keepGeneratedBadge.bind(null, username)); return badge[username].generating; }