La función clearWatchLater() no se invoca después de que expira el tiempo de espera. El código dentro de setTimeout() nunca se ejecuta.
const clearWatchLater = () => { const youtubeBaseUrl = 'https://www.youtube.com'; if (window.location.href === youtubeBaseUrl) { // Do Something } else { window.focus() window.location.href = youtubeBaseUrl; setTimeout(() => { clearWatchLater() }, 5000); } }Sí, no se invocará clearWatchLater().
Porque cuando se ejecuta su bloque else, está recargando la página usando window.location.href = youtubeBaseUrl . Después de volver a cargar la página, la pila de llamadas de Javascript se reinicia. No obtendrá ninguna tarea anterior en su pila. Entonces, su setTimeout no se está ejecutando.