      - SeeAlso: Has parity with non-static method
      */
     @discardableResult
-    public static func utility(after seconds: Double? = nil, block: @convention(block) () -> Swift.Void) -> Async {
+    public static func utility<O>(after seconds: Double? = nil, _ block: (Void) -> O) -> AsyncBlock<Void, O> {
         return Async.async(after: seconds, block: block, queue: .utility)
     }
 

     - SeeAlso: Has parity with non-static method
     */
    @discardableResult
    public static func custom(queue: DispatchQueue, after seconds: Double? = nil, block: @convention(block) () -> Swift.Void) -> Async {
        return Async.async(after: seconds, block: block, queue: .custom(queue: queue))
    }


     - SeeAlso: Has parity with static method
     */
    @discardableResult
    public func userInitiated<O>(after seconds: Double? = nil, _ chainingBlock: (Out) -> O) -> AsyncBlock<Out, O> {
        return chain(after: seconds, block: chainingBlock, queue: .userInitiated)
    }

