 	/// but makes it easier to combine with other producers that may error; for
 	/// example, with operators like `combineLatestWith`, `zipWith`, `flatten`, etc.
 	public func promoteErrors<F: ErrorType>() -> SignalProducer<T, F> {
-		return lift(ReactiveCocoa.promoteErrors(F))
+		return lift { $0.promoteErrors() }
 	}
 }
 

extension SignalProducerType {
	/// Maps each value in the producer to a new value.
	public func map<U>(transform: T -> U) -> SignalProducer<U, E> {
		return lift(ReactiveCocoa.map(transform))
	}

	/// Maps errors in the producer to a new error.
	public func mapError<F>(transform: E -> F) -> SignalProducer<T, F> {
		return lift(ReactiveCocoa.mapError(transform))
	}
	
	/// Preserves only the values of the producer that pass the given predicate.
	public func filter(predicate: T -> Bool) -> SignalProducer<T, E> {
		return lift(ReactiveCocoa.filter(predicate))
	}

	/// Maps values from the producer and forwards the non-nil ones on the
	/// returned producer.
	public func filterMap<U>(transform: T -> U?) -> SignalProducer<U, E> {
		return lift(ReactiveCocoa.filterMap(transform))
	}

	/// Returns a producer that will yield the first `count` values from the
	/// input producer.
	public func take(count: Int) -> SignalProducer<T, E> {
		return lift(ReactiveCocoa.take(count))
	}

	/// Returns a signal that will yield an array of values when `signal` completes.
	public func collect() -> SignalProducer<[T], E> {
		return lift(ReactiveCocoa.collect)
	}

	/// Forwards all events onto the given scheduler, instead of whichever
	/// scheduler they originally arrived upon.
	public func observeOn(scheduler: SchedulerType) -> SignalProducer<T, E> {
		return lift(ReactiveCocoa.observeOn(scheduler))
	}

	/// Combines the latest value of the receiver with the latest value from

	/// If the interval is 0, the timeout will be scheduled immediately. The producer
	/// must complete synchronously (or on a faster scheduler) to avoid the timeout.
	public func timeoutWithError(error: E, afterInterval interval: NSTimeInterval, onScheduler scheduler: DateSchedulerType) -> SignalProducer<T, E> {
		return lift { $0.timeoutWithError(error, afterInterval: interval, onScheduler: scheduler) }
	}

}
