I realized that saving and reverting async await state may not be possible because of how they're low-level C# language features. If you needed async and await to work, you may have to rebuild everyone from scratch, which at that point, may be no better than making your own rollback-based scripting language.
GDTask-like delay methods for async await in rollback netcode.