 public final class Action<Input, Output, Error: Swift.Error> {
 	private let deinitToken: Lifetime.Token
 
-	private let executeClosure: (Input) -> SignalProducer<Output, Error>
+	private let executeClosure: (Input) -> SignalProducer<Output, ActionError<Error>>
 	private let eventsObserver: Signal<Event<Output, Error>, NoError>.Observer
 	private let disabledErrorsObserver: Signal<(), NoError>.Observer
 

	///   - execute: A closure to return a new SignalProducer based on the
	///              current value of `input`.
	public init<P: PropertyProtocol, T>(input: P, _ execute: @escaping (T) -> SignalProducer<Output, Error>) where P.Value == T? {
		self.init(enabledIf: input.map { $0 != nil }) {
			execute(input.value!)
		}
	}



		isEnabled = state.map { $0.isEnabled }
		isExecuting = state.map { $0.isExecuting }
	}

	/// Initializes an action that will be conditionally enabled, and creates a
	/// SignalProducer for each input.
	///
	/// - parameters:
	///   - enabledIf: Boolean property that shows whether the action is
	///                enabled.
	///   - execute: A closure that returns the signal producer returned by
	///              calling `apply(Input)` on the action.
	public convenience init<P: PropertyProtocol>(enabledIf property: P, _ execute: @escaping (Input) -> SignalProducer<Output, Error>) where P.Value == Bool {
		self.init(_internalEnabledIf: property) {
			execute($0).mapError(ActionError.producerFailed)
		}
	}

	/// Initializes an action that will be enabled by default, and creates a
