export function runSafeAsync()

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);
                }
            );
        });
    });
}