I hit those pitfalls with async and moved on. It's popular in open source rust embedded circles, but not my cup of tea.