It appears that the MainSoundTrack was getting added to the scene's list of soundtracks, and receiving an id > -1. This caused multiple problems. The worst symptom was an infinite loop after calling engine.dispose()!
@@ -51,7 +51,7 @@ export class SoundTrack {
this.soundCollection = new Array();
this._options = options;
- if (!this._isMainTrack && this._scene.soundTracks) {
+ if (!this.options.mainTrack && this._scene.soundTracks) {
this._scene.soundTracks.push(this);
this.id = this._scene.soundTracks.length - 1;
}