class Scheduler {
  private _promise: Promise<void> = Promise.resolve();

  nextTick(fn?: () => void): Promise<void> {
    const p = this._promise;
    return fn ? p.then(fn) : p;
  }

  setTick(promise: Promise<void>) {
    this._promise = promise;
  }
}

export { Scheduler };
export default Scheduler;
