function tc<T = unknown, U = T>(
  t: () => MaybePromise<T extends Promise<any> ? never : T>,
  c?: (e: unknown) => MaybePromise<U extends Promise<any> ? never : U>
): MaybePromise<[T, undefined] | [U | undefined, unknown]> {
  try {