import { useEffect, useState } from 'react'; export default function useAsync(fetcher: () => Promise): T | undefined { const [result, setResult] = useState(undefined); useEffect(() => { let alive = true; fetcher().then(result => alive && setResult(result)); return () => { alive = false; }; }, [fetcher]); return result; }