private _resolveFailureCallback()

in src/SyncTasks.ts [473:498]


        private _resolveFailureCallback(callback: CallbackSet<T, any>): void {
            if (callback.failFunc) {
                run(() => {
                    const ret = callback.failFunc!!!(this._storedErrResolution);
                    if (isCancelable(ret)) {
                        if (callback.wasCanceled) {
                            SyncTask.cancelOtherInternal(ret, callback.cancelContext);
                        } else {
                            callback.task!!!.onCancel(context => SyncTask.cancelOtherInternal(ret, context));
                        }
                        // Note: don't care if ret is canceled. We don't need to bubble out since this is already rejected.
                    }
                    if (isThenable(ret)) {
                        ret.then(r => { callback.task!!!.resolve(r); }, e => { callback.task!!!.reject(e); });
                    } else {
                        // The failure has been handled: ret is the resolved value.
                        callback.task!!!.resolve(ret);
                    }
                }, e => {
                    this._handleException(e, 'SyncTask caught exception in failure block: ' + e.toString());
                    callback.task!!!.reject(e);
                });
            } else {
                callback.task!!!.reject(this._storedErrResolution);
            }
        }