Sind JavaScript für immer ausstehende Versprechen schlecht?

Sag, ich habe ein Versprechen namensmyProm, und sagen, ich habe Erfolgs- und Fehlerbehandlungsroutinen namensonSuccess undonError.

Wenn mein Versprechen länger als 10 Sekunden dauert, möchte ich eine Funktion namenstimeoutHandler ausgeführt werden, aber wenn das passiert, wederonSuccess NochonError sollte ausgeführt werden. (Ebenso, wenn entwederonSuccess oderonError rennt, ich will mein @ nictimeoutHandler ermordet werden.

Ich habe mir dazu das folgende Snippet ausgedacht.

new Promise((suc, err) => {
    let outOfTime = false;
    const timeoutId = window.setTimeout(() => {
        outOfTime = true;
        timeoutHandler();
    }, 10000);
    myProm.then(
        (...args) => {
            if (!outOfTime) {
                window.clearTimeout(timeoutId);
                suc(...args);
            }
        },
        (...args) => {
            if (!outOfTime) {
                window.clearTimeout(timeoutId);
                err(...args);
            }
        }
    );
}).then(onSuccess, onError);

Im Falle einer Zeitüberschreitung bleibt mein neu definiertes Versprechen jedoch für immer aus. Könnte dies irgendwelche negativen Nebenwirkungen haben? Beispiel: Die Laufzeitumgebung kann das Promise-Objekt nicht bereinigen, da es noch aussteht (oder ähnliches).