Same as onEvent but only running once, by returning a Future.
Future<T> onceEvent<T extends Event>([String? type]) => onEvent<T>(type).first;