 	/// events on inner producers.
 	@warn_unused_result(message="Did you forget to call `observe` on the signal?")
 	public func flatten(strategy: FlattenStrategy) -> Signal<Value.Value, Error> {
-		return self
-			.map { $0.promoteErrors(Error.self) }
-			.flatten(strategy)
+		return self.flatMap(strategy) { $0.promoteErrors(Error.self) }
 	}
 }
 

	@warn_unused_result(message="Did you forget to call `observe` on the signal?")
	public func flatten(strategy: FlattenStrategy) -> SignalProducer<Value.Value, Error> {
		return self
			.map { $0.promoteErrors(Error.self) }
			.map(SignalProducer.init)
			.flatten(strategy)
	}
}


	/// events on inner producers.
	@warn_unused_result(message="Did you forget to call `observe` on the signal?")
	public func flatten(strategy: FlattenStrategy) -> SignalProducer<Value.Value, Error> {
		return self.flatMap(strategy) { $0.promoteErrors(Error.self) }
	}
}

