From b0cf9bcecea84c15ad951edc94f09f73f8c3a192 Mon Sep 17 00:00:00 2001 From: zhiyue Date: Thu, 26 Jun 2025 04:14:44 +0800 Subject: [PATCH] fix(telemetry): handle all promise rejections in ClearcutLogger (#1557) Co-authored-by: Scott Densmore --- .../clearcut-logger/clearcut-logger.ts | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts index 03e94ef7..7afe7ecc 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts @@ -120,15 +120,22 @@ export class ClearcutLogger { reject(e); }); req.end(body); - }).then((buf: Buffer) => { - try { - this.last_flush_time = Date.now(); - return this.decodeLogResponse(buf) || {}; - } catch (error: unknown) { + }) + .then((buf: Buffer) => { + try { + this.last_flush_time = Date.now(); + return this.decodeLogResponse(buf) || {}; + } catch (error: unknown) { + console.error('Error flushing log events:', error); + return {}; + } + }) + .catch((error: unknown) => { + // Handle all errors to prevent unhandled promise rejections console.error('Error flushing log events:', error); + // Return empty response to maintain the Promise contract return {}; - } - }); + }); } // Visible for testing. Decodes protobuf-encoded response from Clearcut server.