private void guardedDisconnect() { if (getUsageCounter() == 0) { try { disconnect(); if (!saveMessageAfterDisconnect()) { lastMessage = null; } connectionPayload = null; } catch (RuntimeException ex) { reportExceptionToAllReadersAndWriters(ex); log.log(Level.WARNING, "Couldn't disconnect channel " + getChannelName(), ex); } } }