diff --git a/Sources/Nats/NatsConnection.swift b/Sources/Nats/NatsConnection.swift index 1bc4e8a..08820a6 100644 --- a/Sources/Nats/NatsConnection.swift +++ b/Sources/Nats/NatsConnection.swift @@ -1056,6 +1056,13 @@ class ConnectionHandler: ChannelInboundHandler { func write(operation: ClientOp) async throws { guard let buffer = self.batchBuffer else { + // If state is connected but batchBuffer is nil, this is a "fake connection" state + // Trigger reconnect to recover + let currentState = state.withLockedValue { $0 } + if currentState == .connected { + logger.error("Write failed: batchBuffer is nil but state is connected, triggering reconnect") + handleDisconnect() + } throw NatsError.ClientError.invalidConnection("not connected") } do {