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