function BestAvailableLocale(availableLocales, locale) {
        var candidate = locale;
        while (true) {
            if (availableLocales.has(candidate)) {
                return candidate;
            }
            var pos = candidate.lastIndexOf('-');
            if (!~pos) {
                return undefined;
            }
            if (pos >= 2 && candidate[pos - 2] === '-') {
                pos -= 2;
            }
            candidate = candidate.slice(0, pos);
        }
    }
https://tc39.es/ecma402/#sec-bestavailablelocale
@param availableLocales
@param locale