   /// - Returns: handle to the task, allowing to `await handle.get()` on the
   ///     tasks result or `cancel` it. If the operation fails the handle will
   ///     throw the error the operation has thrown when awaited on.
+  @discardableResult
   public static func runDetached<T>(
     priority: Priority = .default,
     startingOn executor: ExecutorRef? = nil,

public func _asyncMainDrainQueue() -> Never

public func _runAsyncMain(_ asyncFun: @escaping () async throws -> ()) {
  let _ = Task.runDetached {
    do {
      try await asyncFun()
      exit(0)

  /// - Returns: handle to the task, allowing to `await handle.get()` on the
  ///     tasks result or `cancel` it. If the operation fails the handle will
  ///     throw the error the operation has thrown when awaited on.
  @discardableResult
  public static func runDetached<T, Failure>(
    priority: Priority = .default,
    startingOn executor: ExecutorRef? = nil,
