In the case where the client cannot reconnect if for example the session expires due to an unreliable error the client will just queue messages for send. If the user of the client is not subscribed to unhandled errors this will cause the client to behave as if it is working while silently trying to reconnect endlessly and failing.
If the client detects a fatal connection error it should change its internal state to throw errors when operations are requested by code using the client. If seems we could consider it a fatal error anytime the Server sends a Disconnect frame to the client, or maybe if it receives an Error frame followed by Disconnect.