1export async function tryCatch<T, E = Error>(
2 promise: Promise<T>
3): Promise<
4 | {
5 success: true
6 value: T
7 error: null
8 }
9 | {
10 success: false
11 value: null
12 error: E
13 }
14> {
15 try {
16 const value = await promise
17 return { success: true, value, error: null }
18 } catch (error) {
19 return { success: false, value: null, error: error as E }
20 }
21}