import { logger } from "./logger";

// https://stackoverflow.com/a/50101022
export async function fetchWithTimeout(
	input: RequestInfo | URL,
	init?: RequestInit | undefined,
	timeout = 5000,
) {
	const controller = new AbortController();
	const timeoutId = setTimeout(() => {
		controller.abort();
		logger.error("Fetch timed out");
	}, timeout);

	const response = await fetch(input, { signal: controller.signal, ...init });

	clearTimeout(timeoutId);

	return response;
}
