It didn't because of the cache.
Let's say the first visitor after the widget cache was truncated has all topics shown as unread.Since he's the first visitor his output will be cached and returned to literally any visitor having the same theme, language and groups and even if these members have no unread topics, the widget would show them as unread!