/** @public */ export const tryAsync = ( fn: (...args: Args) => Promise | R, ): ((...args: Args) => Promise<[R, undefined] | [undefined, Error]>) => async (...args: Args) => { try { return [await fn(...args), undefined] } catch (e) { console.error(e) return [undefined, e as Error] } } /** @public */ export const trySync = ( fn: (...args: Args) => R, ): ((...args: Args) => [R, undefined] | [undefined, Error]) => (...args: Args) => { try { return [fn(...args), undefined] } catch (e) { console.error(e) return [undefined, e as Error] } }