What happens is this: when the reset chat button is clicked, a request is sent to engine that will end the session. However, the browser is unaware that the session was ended on the server side. So, when the next user opens the chat window, the browser still thinks the old sessionid should be included in the request.
When that request reaches engine, engine sees the sessionid, but that session no longer exists. Therefore, engine will start a new session and add an annotation %$_TIMEOUT to the request. However, the greeting message flow will only trigger when request contains %$_INIT annotation. So, the greeting message is skipped and as a result the Timeout flow will be triggered.
The fix is described here: