diff --git a/src/Socket/socket.ts b/src/Socket/socket.ts index f74ce2ae..1dec9b9d 100644 --- a/src/Socket/socket.ts +++ b/src/Socket/socket.ts @@ -971,11 +971,6 @@ export const makeSocket = (config: SocketConfig) => { clearInterval(keepAliveReq) clearTimeout(qrTimer) - // Clean up circuit breakers - queryCircuitBreaker?.destroy() - connectionCircuitBreaker?.destroy() - preKeyCircuitBreaker?.destroy() - // Clean up unified session manager unifiedSessionManager?.destroy() @@ -1021,6 +1016,12 @@ export const makeSocket = (config: SocketConfig) => { cleanupPreKeyAutoSync() cleanupSessionTTL() + // CRITICAL: Destroy circuit breakers AFTER cleanup functions complete + // This ensures cleanup functions can still use circuit breakers if needed + queryCircuitBreaker?.destroy() + connectionCircuitBreaker?.destroy() + preKeyCircuitBreaker?.destroy() + // IMPORTANT: Do NOT use removeAllListeners('connection.update') // It would remove consumer listeners, breaking their reconnection logic }