then

abstract fun then(onFulfilled: (T) -> Unit, onCatch: (Throwable) -> Unit? = null): JsPromise<T>
abstract fun then(onFulfilled: Value, onCatch: Value? = null): JsPromise<T>

TBD.