diff --git a/tracker/tracker/src/main/app/index.ts b/tracker/tracker/src/main/app/index.ts index 9cbbbf5d5..36c42764d 100644 --- a/tracker/tracker/src/main/app/index.ts +++ b/tracker/tracker/src/main/app/index.ts @@ -1635,7 +1635,7 @@ export default class App { } flushBuffer = async (buffer: Message[]) => { - return new Promise((res) => { + return new Promise((res, reject) => { if (buffer.length === 0) { res(null); return; @@ -1648,9 +1648,19 @@ export default class App { endIndex++; } - const messagesBatch = buffer.splice(0, endIndex); - this.postToWorker(messagesBatch); - res(null); + requestIdleCb(() => { + try { + const messagesBatch = buffer.splice(0, endIndex); + + // Cast out the proxy object to a regular array. + this.postToWorker(messagesBatch.map(x => [...x])); + + res(null); + } catch (e) { + this._debug('flushBuffer', e); + reject(e); + } + }) }) }