const SLOW_LOAD_TIME = 1500; function waitOrLoad(callbackIfSlow, maximumLoadTime = SLOW_LOAD_TIME) { const timeout = setTimeout(callbackIfSlow, maximumLoadTime); return function loadingFinished() { clearTimeout(timeout); } } async function doSomething() { const loadingFinished = waitOrLoad(() => { console.log('loading is slow'); }); // do something that the user expects to take some time, e.g. loading data ... loadingFinished(); }