Как реализовать абстракцию над последовательной цепочкой функций?
Примерно как-то так:
class MyCLass {
  static wait(t = 1000) {
    return new Promise(r => setTimeout(r, t))
  }
  
  constructor() {
    this._promise = Promise.resolve()
  }

  then(callback) {
    this._promise = this._promise.then(MyCLass.wait).then(callback)
    return this;
  }
}
this.promise.then требует функции как параметр, Вы передали объект
this.promise.then(()=>new Promise(function(resolve, reject) {