diff --git a/ivette/src/dome/renderer/dome.tsx b/ivette/src/dome/renderer/dome.tsx
index 2a8a68cc9933190d65bcef63bc1f49bdeba9b617..afcb22e3a8b8354cc4496f8fcee198c2753925ee 100644
--- a/ivette/src/dome/renderer/dome.tsx
+++ b/ivette/src/dome/renderer/dome.tsx
@@ -532,8 +532,10 @@ export function usePromise<T>(job: Promise<T>) {
   const [loading, setLoading] = React.useState(true);
   React.useEffect(() => {
     let cancel = false;
-    const term = (a: any) => { if (!cancel) { setLoading(false); return a; } };
-    job.then(term(setResult), term(setError));
+    const doCancel = () => { if (!cancel) setLoading(false); return cancel};
+    const onResult = (x: T) => { if (!doCancel()) setResult(x); };
+    const onError = (e: Error) => {if (!doCancel()) setError(e); };
+    job.then(onResult, onError);
     return () => { cancel = true; };
   }, [job]);
   return { result, error, loading };