diff --git a/page/src/emulator.ts b/page/src/emulator.ts index 889ee12b..26473b1f 100644 --- a/page/src/emulator.ts +++ b/page/src/emulator.ts @@ -80,6 +80,7 @@ export class Emulator { /*new URL('./emulator-worker.js', import.meta.url)*/ "./emulator-worker.js", ); + this.worker.onerror = this._onError.bind(this); this.worker.onmessage = this._onMessage.bind(this); } @@ -152,6 +153,20 @@ export class Emulator { this.updateState(); } + logError(message: string) { + this.logHandler([`${message}`]); + } + + _onError(ev: ErrorEvent) { + try { + this.worker.terminate(); + } catch (e) {} + + this.logError(`Emulator encountered fatal error: ${ev.message}`); + this._setState(EmulationState.Failed); + this.terminateResolve(-1); + } + _onMessage(event: MessageEvent) { if (event.data.message == "log") { this.logHandler(event.data.data);