 		return NSError(domain: "RACAction", code: 1, userInfo: nil)
 	}
 
+	let _scheduler: Scheduler
 	let _execute: I -> Promise<Result<O>>
 	let _executions = SignalingProperty<ExecutionSignal?>(nil)
 

	func execute(input: I) -> ExecutionSignal {
		let results = SignalingProperty<Result<O>?>(nil)

		MainScheduler().schedule {
			if (!self.enabled.current) {
				results.value = Result.Error(self.notEnabledError)
				return


	/// Initializes an action that will be conditionally enabled, and create
	/// a Promise for each execution.
	init(enabledIf: Signal<Bool>, scheduler: Scheduler = MainScheduler(), execute: I -> Promise<Result<O>>) {
		_execute = execute
		_scheduler = scheduler

		enabled = .constant(true)
		enabled = enabledIf
