async _loadExternal(routeDefinition) {
    if (!routeDefinition)
      throw new Error("[uibrouter:loadExternal] Error loading route template. No route definition provided.");
    if (!routeDefinition.src) {
      if (!routeDefinition.type || routeDefinition.type && routeDefinition.type !== "url")
        routeDefinition.src = routeDefinition.id;
      else
        throw new Error("[uibrouter:loadExternal] Error loading route template. `src` property not defined");
    }
    const id = routeDefinition.id;
    let response;
    try {
      response = await fetch(routeDefinition.src);
    } catch (e) {
      throw new Error(`[uibrouter:loadExternal] Error loading route template HTML for route: ${routeDefinition.id}, src: ${routeDefinition.src}. Error: ${e.message}`, e);
    }
    if (response.ok === false)
      throw new Error(`[uibrouter:loadExternal] Fetch failed to return data for route: ${routeDefinition.id}, src: ${routeDefinition.src}. Status: ${response.statusText} (${response.status})`, [routeDefinition.id, routeDefinition.src, response.status, response.statusText]);
    let htmlText = await response.text();
    if (window["markdownit"] && routeDefinition.format === "md") {
      htmlText = this.renderMarkdown(htmlText);
    }
    try {
      const chkTemplate = document.querySelector(`#${id}`);
      if (chkTemplate)
        chkTemplate.remove();
    } catch (e) {
    }
    const tempContainer = document.createElement("template");
    tempContainer.innerHTML = htmlText;
    tempContainer.setAttribute("id", id);
    return tempContainer;
  }
Loads an external HTML file into a `<template>` tag, adding the router id as the template id. Or throws.
@param {routeDefinition} routeDefinition Configuration for a single route
@returns {HTMLTemplateElement[]} An HTMLTemplateElement that will provide the route content