@@ -1176,6 +1176,22 @@ extension SignalProducerProtocol where Error == NoError {
11761176 ) -> SignalProducer < Value , NewError > {
11771177 return lift { $0. timeout ( after: interval, raising: error, on: scheduler) }
11781178 }
1179+
1180+ /// Wait for completion of `self`, *then* forward all events from
1181+ /// `replacement`.
1182+ ///
1183+ /// - note: All values sent from `self` are ignored.
1184+ ///
1185+ /// - parameters:
1186+ /// - replacement: A producer to start when `self` completes.
1187+ ///
1188+ /// - returns: A producer that sends events from `self` and then from
1189+ /// `replacement` when `self` completes.
1190+ public func then< U, NewError: Swift . Error > ( _ replacement: SignalProducer < U , NewError > ) -> SignalProducer < U , NewError > {
1191+ return self
1192+ . promoteErrors ( NewError . self)
1193+ . then ( replacement)
1194+ }
11791195}
11801196
11811197extension SignalProducerProtocol where Value: Equatable {
@@ -1576,6 +1592,22 @@ extension SignalProducerProtocol {
15761592 }
15771593 }
15781594
1595+ /// Wait for completion of `self`, *then* forward all events from
1596+ /// `replacement`. Any failure or interruption sent from `self` is
1597+ /// forwarded immediately, in which case `replacement` will not be started,
1598+ /// and none of its events will be be forwarded.
1599+ ///
1600+ /// - note: All values sent from `self` are ignored.
1601+ ///
1602+ /// - parameters:
1603+ /// - replacement: A producer to start when `self` completes.
1604+ ///
1605+ /// - returns: A producer that sends events from `self` and then from
1606+ /// `replacement` when `self` completes.
1607+ public func then< U> ( _ replacement: SignalProducer < U , NoError > ) -> SignalProducer < U , Error > {
1608+ return self . then ( replacement. promoteErrors ( Error . self) )
1609+ }
1610+
15791611 /// Start the producer, then block, waiting for the first value.
15801612 ///
15811613 /// When a single value or error is sent, the returned `Result` will
0 commit comments