export async function executeWithTimeout<T, E extends Error>(
  promise: Promise<T>,
  timeoutMs: number,
  error: E = new Error("timeout") as E,
): Promise<T> {
  return Promise.race([promise, new Promise<never>((_, reject) => setTimeout(() => reject(error), timeoutMs))]);
}
