Skip to content

Commit a6977c8

Browse files
committed
fix(replay): Only check worker is ready once
1 parent e3fba01 commit a6977c8

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

packages/replay/src/eventBuffer/EventBufferCompressionWorker.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
import type { ReplayRecordingData } from '@sentry/types';
12
import { logger } from '@sentry/utils';
23

34
import type { AddEventResult, EventBuffer, RecordingEvent, WorkerRequest, WorkerResponse } from '../types';
4-
import { ReplayRecordingData } from '@sentry/types';
55

66
/**
77
* Event buffer that uses a web worker to compress events.
@@ -18,6 +18,7 @@ export class EventBufferCompressionWorker implements EventBuffer {
1818
private _worker: Worker;
1919
private _eventBufferItemLength: number = 0;
2020
private _id: number = 0;
21+
private _ensureReadyPromise?: Promise<void>;
2122

2223
public constructor(worker: Worker) {
2324
this._worker = worker;
@@ -44,7 +45,12 @@ export class EventBufferCompressionWorker implements EventBuffer {
4445
* This will either resolve when the worker is ready, or reject if an error occured.
4546
*/
4647
public ensureReady(): Promise<void> {
47-
return new Promise((resolve, reject) => {
48+
// Ensure we only check once
49+
if (this._ensureReadyPromise) {
50+
return this._ensureReadyPromise;
51+
}
52+
53+
this._ensureReadyPromise = new Promise((resolve, reject) => {
4854
this._worker.addEventListener(
4955
'message',
5056
({ data }: MessageEvent) => {
@@ -65,6 +71,8 @@ export class EventBufferCompressionWorker implements EventBuffer {
6571
{ once: true },
6672
);
6773
});
74+
75+
return this._ensureReadyPromise;
6876
}
6977

7078
/**

0 commit comments

Comments
 (0)