code: function insertLine (interactive = true) {
    if (!story.canContinue) {
      return Promise.resolve(false);
    }
    const line = story.Continue();
    const {elementType, classes} = decodeTags(story.currentTags);
    const elem = createLineElement(line, elementType, classes);
    if (interactive) {
      return new Promise(resolve => {
        const cb = oneTimeCB(resolve);
        elem.addEventListener('animationend', cb);
        setTimeout(cb, 2000);
        stageDiv.appendChild(elem);
      });
    } else {
      stageDiv.appendChild(elem);
      return Promise.resolve(true);
    }
  }
docs: /* Insert a line of content into the output /* Returns a Promise that resolves when the animation on the inserted element
  ends or two seconds elapse, whichever happens first.
  
  The two seconds condition is not supposed to be called, and is instead just a
  fallback to deal with possible weirdness/race conditions browsers can have.
  
  @param interactive bool if false, no animation is played and the line is inserted silently.
  @return Promise