@@ -47,6 +47,7 @@ export function listenToRequestData(requestId: string): RequestListener {
4747 const messagesToDelete : string [ ] = [ ] ;
4848 let isActive = true ;
4949 let isEnded = false ;
50+ let initializationError : Error | null = null ;
5051
5152 // Create dedicated Redis client for THIS listener
5253 const url = process . env . REDIS_URL || 'redis://localhost:6379' ;
@@ -232,18 +233,6 @@ export function listenToRequestData(requestId: string): RequestListener {
232233 }
233234 }
234235
235- // Start listening to existing and new messages immediately
236- ( async ( ) => {
237- try {
238- await checkExistingMessages ( ) ;
239- await setupStreamListener ( ) ;
240- } catch ( error ) {
241- console . error ( 'Error initializing Redis listener:' , error ) ;
242- }
243- } ) ( ) . catch ( ( error : unknown ) => {
244- console . error ( 'Error initializing Redis listener:' , error ) ;
245- } ) ;
246-
247236 // Create the listener object
248237 const listener : RequestListener = {
249238 /**
@@ -252,6 +241,13 @@ export function listenToRequestData(requestId: string): RequestListener {
252241 * @returns A promise that resolves when the key is found
253242 */
254243 getValue : async ( key : string ) => {
244+ // If initialization failed, reject immediately with the initialization error
245+ if ( initializationError ) {
246+ return Promise . reject (
247+ new Error ( `Redis listener initialization failed: ${ initializationError . message } ` ) ,
248+ ) ;
249+ }
250+
255251 // If we already have a promise for this key, return it
256252 const existingPromise = pendingPromises [ key ] ;
257253 if ( existingPromise ) {
@@ -342,5 +338,19 @@ export function listenToRequestData(requestId: string): RequestListener {
342338 } ,
343339 } ;
344340
341+ // Start listening to existing and new messages immediately
342+ ( async ( ) => {
343+ try {
344+ await checkExistingMessages ( ) ;
345+ await setupStreamListener ( ) ;
346+ } catch ( error ) {
347+ console . error ( 'Error initializing Redis listener:' , error ) ;
348+ initializationError = error instanceof Error ? error : new Error ( String ( error ) ) ;
349+ await listener . close ( ) ;
350+ }
351+ } ) ( ) . catch ( ( error : unknown ) => {
352+ console . error ( 'Fatal error in Redis listener initialization:' , error ) ;
353+ } ) ;
354+
345355 return listener ;
346356}
0 commit comments