import { useCallback } from 'react'; import useMountedState from './useMountedState'; export type UsePromise = () => (promise: Promise) => Promise; const usePromise: UsePromise = () => { const isMounted = useMountedState(); return useCallback( (promise: Promise) => new Promise((resolve, reject) => { const onValue = (value) => { isMounted() && resolve(value); }; const onError = (error) => { isMounted() && reject(error); }; promise.then(onValue, onError); }), [] ); }; export default usePromise;