in src/SyncTasks.ts [426:451]
private _resolveSuccessCallback(callback: CallbackSet<T, any>): void {
if (callback.successFunc) {
run(() => {
const ret = callback.successFunc!!!(this._storedResolution!!!);
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 resolved.
}
if (isThenable(ret)) {
// The success block of a then returned a new promise, so
ret.then(r => { callback.task!!!.resolve(r); }, e => { callback.task!!!.reject(e); });
} else {
callback.task!!!.resolve(ret);
}
}, e => {
this._handleException(e, 'SyncTask caught exception in success block: ' + e.toString());
callback.task!!!.reject(e);
});
} else {
callback.task!!!.resolve(this._storedResolution);
}
}