async erase() {
    // If we have initialized, we will use the existing mechanism instances.
    /** @type {!Array<!shaka.extern.StorageMechanism>} */
    const mechanisms = Array.from(this.mechanisms_.values());
    const alreadyInitialized = mechanisms.length > 0;

    // If we have not initialized, we should still be able to erase.  This is
    // critical to our ability to wipe the DB in case of a version mismatch.
    // If there are no instances, create temporary ones and destroy them later.
    if (!alreadyInitialized) {
      const registry = shaka.offline.StorageMuxer.getRegistry_();
      registry.forEach((factory, name) => {
        const mech = factory();
        if (mech) {
          mechanisms.push(mech);
        }
      });
    }

    // Erase all storage mechanisms.
    await Promise.all(mechanisms.map((m) => m.erase()));

    // If we were erasing temporary instances, destroy them, too.
    if (!alreadyInitialized) {
      await Promise.all(mechanisms.map((m) => m.destroy()));
    }
  }
This will erase all previous content from storage. Using paths obtained
before calling |erase| is discouraged, as cells may have changed during a
erase.

@return {!Promise}