async formatWithFallback(keys, method) {
    const translations = [];
    let hasAtLeastOneBundle = false;

    for await (const bundle of this.bundles) {
      hasAtLeastOneBundle = true;
      const missingIds = keysFromBundle(method, bundle, keys, translations);

      if (missingIds.size === 0) {
        break;
      }

      if (typeof console !== "undefined") {
        const locale = bundle.locales[0];
        const ids = Array.from(missingIds).join(", ");
        console.warn(`[fluent] Missing translations in ${locale}: ${ids}`);
      }
    }

    if (!hasAtLeastOneBundle && typeof console !== "undefined") {
      console.warn(`[fluent] Request for keys failed because no resource bundles got generated.
  keys: ${JSON.stringify(keys)}.
  resourceIds: ${JSON.stringify(this.resourceIds)}.`);
    }

    return translations;
  }
Format translations and handle fallback if needed.

Format translations for `keys` from `FluentBundle` instances on this
DOMLocalization. In case of errors, fetch the next context in the
fallback chain.

@param   {Array<Object>}         keys    - Translation keys to format.
@param   {Function}              method  - Formatting function.
@returns {Promise<Array<string|Object>>}
@private