@Override
    public void retrieveServer(ModpackModel modpack, final String serverId, final IDiscordCallback callback) {
        final Boolean deadCacheValue = deadCache.getIfPresent(serverId);

        if (deadCacheValue != null && deadCacheValue)
            return;

        Server cacheValue = cache.getIfPresent(serverId);
        if (cacheValue != null) {
            if (deadCacheValue == null)
                deadCache.put(serverId, false);

            callback.serverGetCallback(modpack, cacheValue);
            return;
        }

        //Fill the dead cache immediately to prevent discord API requests from getting spammed
        //before the first one comes back.  The response will sort out the "correct" value for the
        //dead cache.
        deadCache.put(serverId, true);
        this.innerApi.retrieveServer(modpack, serverId, new IDiscordCallback() {
            @Override
            public void serverGetCallback(ModpackModel pack, Server server) {
                if (server == null)
                    deadCache.put(serverId, true);
                else {
                    deadCache.put(serverId, false);
                    cache.put(serverId, server);
                }

                callback.serverGetCallback(pack, server);
            }
        });
    }