Amongst others I tried: Mattermost, Rocket.chat, IRC(Cloud), Gitter, Discord, Slack, MS Teams, Twist, Hangouts Chat.
Two stood out, both open source (Spectrum wasn't when I started looking):
Spectrum: https://spectrum.chat/
Zulip: https://zulipchat.com/
These two along with Twist (proprietary) manage to deal with the threading and hybrid sync/async. Both the above also have exceptionally helpful people behind them.
The other special mention goes to Matrix (https://matrix.org/) and Riot (https://riot.im/) as their persistence syncing and federation work is impressive. Their threading and hence async story isn't as well developed yet though (https://github.com/vector-im/riot-web/issues/2349).