 
 			let promise = self._execute(input)
 			let execution: ExecutionSignal = promise.signal
-				.deliverOn(MainScheduler())
+				.deliverOn(self._scheduler)
 				// Remove one layer of optional binding caused by the `deliverOn`.
 				.unwrapOptionals(identity, initialValue: nil)
 


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

		enabled = .constant(true)
		enabled = enabledIf

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

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