code: function update (component, replaceNode=true) {
    if (syncUpdatesInProgressCounter > 0) {
      updateSync(component, replaceNode)
      return Promise.resolve()
    }
  
    let scheduler = getScheduler()
  
    if (!componentsWithPendingUpdates.has(component)) {
      componentsWithPendingUpdates.add(component)
      scheduler.updateDocument(function () {
        componentsWithPendingUpdates.delete(component)
        updateSync(component, replaceNode)
      })
    }
  
    return scheduler.getNextUpdatePromise()
  }
docs: This function receives a component that has already been associated with an element via a previous call to `initialize` and updates this element by calling `render` on the component.  When called in normal circumstances, it uses the scheduler to defer this update until the next animation frame, and will only perform one update of a given component in a given frame. This means you can call `update` repeatedly in a given tick without causing redundant updates.  If this function called during another synchronous update (for example, as a result of a call to `update` on a child component), the update is performed synchronously.  Returns a promise that will resolve when the requested update has been completed.