notifySessionClose is guaranteed to be eventually called for any session,
that is, the same number of times notifyNewSession returns successfully.
Compared with the corresponding client disconnection, it may just be delayed of a few seconds,
depending on the <session_timeout_millis> configuration flag.

If you can identify and replicate a case in which notifyNewSession returns successfully, then the client is closed, but notifySessionClose is never called,
then please show us the Server log,
taken with default log settings and the LightstreamerLogger.connections logger at INFO level.
Some intermediate proxy might keep a streaming connection alive after the connection from the browser has been broken.