export async function tryCatch( promise: Promise ): Promise< | { success: true value: T error: null } | { success: false value: null error: E } > { try { const value = await promise return { success: true, value, error: null } } catch (error) { return { success: false, value: null, error: error as E } } }