Sorry, but I'm still having trouble with the logic here.  You need to clear the timer here, if there is one, but I don't think you actually need to call _clearMessage() or hideNotification() here, since you are going to be displaying the notification and setting its innerHTML in the call to showMessage.

In the case where there is one persistent message and you are replacing it with a new one, you clearMessage() will remove the persistent message and then display it again, and then hideNotification() will hide it again and then finally you'll display the new persistent message.

In the end the code works. But it is inefficient and confusing enough that it will be difficult to maintain.  So please try to simplify this further. 

If it helps to simplify, consider defining separate methods: showTransientNotification() and showPersistentNotification()