The code to reproduce the bug is very short.
const canvas = document.createElement("canvas");
const engine = new Engine(canvas);
const scene = new Scene(engine);
new DefaultRenderingPipeline("default", true, scene);
scene.dispose();
engine.dispose();
After running the above code, the infinite setTimeout loop will run.

Here is the repository to reproduce the bug. I’ve kept the things minimal.
If you dispose the engine and scene immediately after creating them, the effect will wait indefinitely for shader compilation.
However, without DefaultRenderingPipeline, this bug does not occur. ![]()
The bug seems to be related to this issue.