export async function tryCatchAsync<T, E = Error>(  
  promise: Promise<T>,  
): Promise<Result<T, E>> {  
  try {  
   const data = await promise;  
   return { data, error: null };  
  } catch (error) {  
   return { data: null, error: error as E };  
  }  
}
export async function tryCatchAsync<T, E = Error>(  
  promise: () => Promise<T>,  
): Promise<Result<T, E>> {  
  try {  
   const data = await promise;  
   return { data, error: null };  
  } catch (error) {  
   return { data: null, error: error as E };  
  }  
}

Refs

  1. https://t3.chat/chat/7c2a80ef-6ab0-4738-a83e-c909d0b2ca0a
  2. **