in src/util/runner.ts [23:52]
export function runSafeAsync<T>(
func: () => Thenable<T>,
errorVal: T,
errorMessage: string,
token: CancellationToken
): Thenable<T | ResponseError<never>> {
return new Promise<T | ResponseError<never>>((resolve) => {
setImmediate(() => {
if (token.isCancellationRequested) {
resolve(cancelValue());
}
return func().then(
(result) => {
if (token.isCancellationRequested) {
resolve(cancelValue());
return;
} else {
resolve(result);
}
},
(e) => {
console.error(formatError(errorMessage, e));
resolve(errorVal);
}
);
});
});
}