@surface/core
Version:
Provides core functionality of many @surfaces modules.
26 lines (25 loc) • 838 B
JavaScript
/* eslint-disable import/prefer-default-export */
import TaskCanceledError from "../errors/task-canceled-error.js";
export async function runAsync(task, timeout, cancellationToken) {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (cancellationToken?.canceled) {
reject(new TaskCanceledError());
}
else {
try {
const value = task();
if (value instanceof Promise) {
value.then(resolve, reject);
}
else {
resolve(value);
}
}
catch (error) {
reject(error);
}
}
}, timeout);
});
}