 // MARK: - Disambiguate Init
 
 extension Future where Error == Never {
+    /// Creates a future with the given value and automatically assigns `Error`
+    /// to be `Never`.
     public init(value: Value) {
         self.init(result: .success(value))
     }

    ///   - completion: Gets called when the future is resolved.
    public func on(success: ((Value) -> Void)? = nil, failure: ((Error) -> Void)? = nil, completion: ((Result) -> Void)? = nil) {
        let scheduler = self.scheduler ?? Scheduler.default
        cascadeImmediately { result in
            scheduler {
                switch result {
                case let .success(value): success?(value)

    public init(_ closure: (_ promise: Promise) -> Void) {
        let promise = Promise()
        self.init(resolver: .promise(promise))
        closure(promise)
    }

    private init(resolver: Resolver, scheduler: ScheduleWork? = nil) {
        self.resolver = resolver
        self.scheduler = scheduler
    }
