export function runSafe()

in src/util/runner.ts [54:81]


export function runSafe<T, E>(
    func: () => T,
    errorVal: T,
    errorMessage: string,
    token: CancellationToken
): Thenable<T | ResponseError<E>> {
    return new Promise<T | ResponseError<E>>((resolve) => {
        setImmediate(() => {
            if (token.isCancellationRequested) {
                resolve(cancelValue());
            } else {
                try {
                    const result = func();
                    if (token.isCancellationRequested) {
                        resolve(cancelValue());

                        return;
                    } else {
                        resolve(result);
                    }
                } catch (e) {
                    console.error(formatError(errorMessage, e));
                    resolve(errorVal);
                }
            }
        });
    });
}