const doStuff = () => { alert(`done`); }; const res1 = (a) => console.log(a, "done"); const res2 = (b) => console.log(b, "dont ever think"); const once = (fn1, fn2) => { let done = false; return (...args) => { if (!done) { fn1(...args); done = true; } else { fn2(...args); } }; }; const doStuffOnce = once(doStuff, res2); const resOnce = once(res1, res2);