code: function destroy (component, removeNode=true) {
    if (syncUpdatesInProgressCounter > 0 || syncDestructionsInProgressCounter > 0) {
      destroySync(component, removeNode)
      return Promise.resolve()
    }
  
    let scheduler = getScheduler()
    scheduler.updateDocument(function () {
      destroySync(component, removeNode)
    })
    return scheduler.getNextUpdatePromise()
  }
docs: Removes the component's associated element and calls `destroy` on any child components. Normally, this function is asynchronous and will perform the destruction on the next animation frame. If called as the result of another update or destruction, it calls `destroy` on child components synchronously. If called as the result of destroying a component higher in the DOM, the element is not removed to avoid redundant DOM manipulation. Returns a promise that resolves when the destruction is completed.