React Hook for creating a cancelable promise. Useful for avoiding state mutations after a component has unmounted