From 082646469bde184531528f10eeba8bcd83757d02 Mon Sep 17 00:00:00 2001 From: tak Date: Thu, 18 Jul 2024 14:19:44 +0900 Subject: [PATCH] fix: handle stream errors Handles potential errors during stream reading in the HuggingFace service to prevent unhandled promise rejections. --- src/services/ai/hugging-face.service.ts | 30 ++++++++++++++----------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/services/ai/hugging-face.service.ts b/src/services/ai/hugging-face.service.ts index 6beb35c..f480664 100644 --- a/src/services/ai/hugging-face.service.ts +++ b/src/services/ai/hugging-face.service.ts @@ -406,21 +406,25 @@ export class HuggingFaceService extends AIService { async function completeResponsePromise() { // eslint-disable-next-line no-async-promise-executor - return new Promise(async resolve => { - if (!modifiedStream) { - throw new Error(`ModifiedStream undefined`); - } else { - const reader = modifiedStream.getReader(); - - // eslint-disable-next-line no-constant-condition - while (true) { - const { done, value } = await reader.read(); - - if (done) { - resolve(completeResponse); - break; // The streaming has ended. + return new Promise(async (resolve, reject) => { + try { + if (!modifiedStream) { + reject(`ModifiedStream undefined`); + } else { + const reader = modifiedStream.getReader(); + + // eslint-disable-next-line no-constant-condition + while (true) { + const { done, value } = await reader.read(); + + if (done) { + resolve(completeResponse); + break; // The streaming has ended. + } } } + } catch (error) { + reject(error); // Reject the promise with the caught error } }); }