                 onError: {[weak self] error in
                     self?._errors.onNext(ActionError.UnderlyingError(error))
                 },
-                onCompleted: nil,
+                onCompleted: {[weak self] in
+                    self?._completed.onNext()
+                },
                 onDisposed: {[weak self] in
                     self?.doLocked { self?._executing.value = false }
                 })

    /// Inputs that execute the action.
    /// Inputs via execute() also appear in this subject.
    public let inputs = PublishSubject<Input>()
    private let skipsInputs = Variable(false)

    /// Errors aggrevated from invocations of execute(). 
    /// Delivered on whatever scheduler they were sent from.

        }.bindTo(_enabled).addDisposableTo(disposeBag)

        self.inputs
            .subscribeNext { [weak self] input in
                self?._execute(input)
            }
            .addDisposableTo(disposeBag)
