Skip to content

Commit 7403000

Browse files
committed
fix: remove fulfilled promises correctly
1 parent 8af4444 commit 7403000

File tree

5 files changed

+44
-71
lines changed

5 files changed

+44
-71
lines changed

packages/opentelemetry-exporter-collector-grpc/src/CollectorExporterNodeBase.ts

+9-17
Original file line numberDiff line numberDiff line change
@@ -55,25 +55,17 @@ export abstract class CollectorExporterNodeBase<
5555
onSuccess: () => void,
5656
onError: (error: collectorTypes.CollectorExporterError) => void
5757
): void {
58-
const promise = new Promise<void>(resolve => {
59-
const _onSuccess = (): void => {
60-
onSuccess();
61-
_onFinish();
62-
};
63-
const _onError = (error: collectorTypes.CollectorExporterError): void => {
64-
onError(error);
65-
_onFinish();
66-
};
67-
const _onFinish = () => {
68-
resolve();
69-
const index = this._sendingPromises.indexOf(promise);
70-
this._sendingPromises.splice(index, 1);
71-
};
72-
73-
this._send(this, objects, _onSuccess, _onError);
74-
});
58+
const promise = new Promise<void>((resolve, reject) => {
59+
this._send(this, objects, resolve, reject);
60+
})
61+
.then(onSuccess)
62+
.catch(onError);
7563

7664
this._sendingPromises.push(promise);
65+
promise.finally(() => {
66+
const index = this._sendingPromises.indexOf(promise);
67+
this._sendingPromises.splice(index, 1);
68+
});
7769
}
7870

7971
onInit(config: CollectorExporterConfigNode): void {

packages/opentelemetry-exporter-collector-proto/src/CollectorExporterNodeBase.ts

+9-17
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,17 @@ export abstract class CollectorExporterNodeBase<
3636
onSuccess: () => void,
3737
onError: (error: collectorTypes.CollectorExporterError) => void
3838
): void {
39-
const promise = new Promise<void>(resolve => {
40-
const _onSuccess = (): void => {
41-
onSuccess();
42-
_onFinish();
43-
};
44-
const _onError = (error: collectorTypes.CollectorExporterError): void => {
45-
onError(error);
46-
_onFinish();
47-
};
48-
const _onFinish = () => {
49-
resolve();
50-
const index = this._sendingPromises.indexOf(promise);
51-
this._sendingPromises.splice(index, 1);
52-
};
53-
54-
this._send(this, objects, _onSuccess, _onError);
55-
});
39+
const promise = new Promise<void>((resolve, reject) => {
40+
this._send(this, objects, resolve, reject);
41+
})
42+
.then(onSuccess)
43+
.catch(onError);
5644

5745
this._sendingPromises.push(promise);
46+
promise.finally(() => {
47+
const index = this._sendingPromises.indexOf(promise);
48+
this._sendingPromises.splice(index, 1);
49+
});
5850
}
5951

6052
onInit(config: CollectorExporterNodeConfigBase): void {

packages/opentelemetry-exporter-collector/src/platform/browser/CollectorExporterBrowserBase.ts

+11-18
Original file line numberDiff line numberDiff line change
@@ -69,27 +69,20 @@ export abstract class CollectorExporterBrowserBase<
6969
const serviceRequest = this.convert(items);
7070
const body = JSON.stringify(serviceRequest);
7171

72-
const promise = new Promise<void>(resolve => {
73-
const _onSuccess = (): void => {
74-
onSuccess();
75-
_onFinish();
76-
};
77-
const _onError = (error: collectorTypes.CollectorExporterError): void => {
78-
onError(error);
79-
_onFinish();
80-
};
81-
const _onFinish = () => {
82-
resolve();
83-
const index = this._sendingPromises.indexOf(promise);
84-
this._sendingPromises.splice(index, 1);
85-
};
86-
72+
const promise = new Promise<void>((resolve, reject) => {
8773
if (this._useXHR) {
88-
sendWithXhr(body, this.url, this._headers, _onSuccess, _onError);
74+
sendWithXhr(body, this.url, this._headers, resolve, reject);
8975
} else {
90-
sendWithBeacon(body, this.url, _onSuccess, _onError);
76+
sendWithBeacon(body, this.url, resolve, reject);
9177
}
92-
});
78+
})
79+
.then(onSuccess)
80+
.catch(onError);
81+
9382
this._sendingPromises.push(promise);
83+
promise.finally(() => {
84+
const index = this._sendingPromises.indexOf(promise);
85+
this._sendingPromises.splice(index, 1);
86+
});
9487
}
9588
}

packages/opentelemetry-exporter-collector/src/platform/node/CollectorExporterNodeBase.ts

+10-17
Original file line numberDiff line numberDiff line change
@@ -62,30 +62,23 @@ export abstract class CollectorExporterNodeBase<
6262
}
6363
const serviceRequest = this.convert(objects);
6464

65-
const promise = new Promise<void>(resolve => {
66-
const _onSuccess = (): void => {
67-
onSuccess();
68-
_onFinish();
69-
};
70-
const _onError = (error: collectorTypes.CollectorExporterError): void => {
71-
onError(error);
72-
_onFinish();
73-
};
74-
const _onFinish = () => {
75-
resolve();
76-
const index = this._sendingPromises.indexOf(promise);
77-
this._sendingPromises.splice(index, 1);
78-
};
65+
const promise = new Promise<void>((resolve, reject) => {
7966
sendWithHttp(
8067
this,
8168
JSON.stringify(serviceRequest),
8269
'application/json',
83-
_onSuccess,
84-
_onError
70+
resolve,
71+
reject
8572
);
86-
});
73+
})
74+
.then(onSuccess)
75+
.catch(onError);
8776

8877
this._sendingPromises.push(promise);
78+
promise.finally(() => {
79+
const index = this._sendingPromises.indexOf(promise);
80+
this._sendingPromises.splice(index, 1);
81+
});
8982
}
9083

9184
onShutdown(): void {}

packages/opentelemetry-exporter-zipkin/src/zipkin.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,14 @@ export class ZipkinExporter implements SpanExporter {
7676
this._sendSpans(spans, this._serviceName!, result => {
7777
resolve();
7878
resultCallback(result);
79-
const index = this._sendingPromises.indexOf(promise);
80-
this._sendingPromises.splice(index, 1);
8179
});
8280
});
81+
8382
this._sendingPromises.push(promise);
83+
promise.finally(() => {
84+
const index = this._sendingPromises.indexOf(promise);
85+
this._sendingPromises.splice(index, 1);
86+
});
8487
}
8588

8689
/**

0 commit comments

Comments
 (0)