UNPKG

@surface/core

Version:

Provides core functionality of many @surfaces modules.

26 lines (25 loc) 838 B
/* 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); }); }