const swr = new Map; const useSWR = (path, fetcher, cache) => { let [data, update] = useState(null); if (!swr.has(path) || swr.get(path) !== cache) { fetcher(path).then(update, () => update(new Error(path))); swr.set(path, cache); } const isError = data instanceof Error; return { data: isError ? null : data, error: isError ? data : null }; };