export const settle = async ( promise: (() => Promise) | Promise, ): Promise<[R, undefined] | [undefined, E]> => { try { const result: R = typeof promise === 'function' ? await promise() : await promise return [result, undefined] } catch (error) { return [undefined, error as E] } } export const settleSync = ( func: () => R, ): [R | undefined, E | undefined] => { try { return [func(), undefined] } catch (error) { return [undefined, error as E] } } export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))