Skip to content

Commit bee2e45

Browse files
committed
create pendingwrites set only when necessary
1 parent 4326bf0 commit bee2e45

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

packages/logger/src/logger.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export class Logger implements AsyncDisposable {
4949
#prefix: string | undefined;
5050
#attrs: Attributes | undefined;
5151
#writers: [LogWriter, ...LogWriter[]];
52-
#pendingWrites = new Set<Promise<void>>();
52+
#pendingWrites?: Set<Promise<void>>;
5353

5454
constructor(opts: LoggerOptions = {}) {
5555
let logLevelEnv = getEnv('LOG_LEVEL');
@@ -106,11 +106,12 @@ export class Logger implements AsyncDisposable {
106106
for (const w of this.#writers) {
107107
const write$ = w.write(level, attrs, msg);
108108
if (isPromise(write$)) {
109+
this.#pendingWrites ??= new Set();
109110
this.#pendingWrites.add(write$);
110111
write$
111112
.then(() => {
112113
// we remove from pending writes only if the write was successful
113-
this.#pendingWrites.delete(write$);
114+
this.#pendingWrites!.delete(write$);
114115
})
115116
.catch((e) => {
116117
// otherwise we keep in the pending write to throw on flush
@@ -121,14 +122,14 @@ export class Logger implements AsyncDisposable {
121122
}
122123

123124
public flush() {
124-
if (this.#pendingWrites.size) {
125+
if (this.#pendingWrites?.size) {
125126
const errs: unknown[] = [];
126127
return Promise.allSettled(
127128
Array.from(this.#pendingWrites).map((w) =>
128129
w.catch((err) => errs.push(err)),
129130
),
130131
).then(() => {
131-
this.#pendingWrites.clear();
132+
this.#pendingWrites!.clear();
132133
if (errs.length) {
133134
throw new AggregateError(
134135
errs,

0 commit comments

Comments
 (0)