 								: state
 						}
 
+					// Explicitly drop interruped events from inner signals
+					case .Interrupted:
+						break
+
 					default:
 						state.withValue { value -> () in
 							if value.isLatestIncompleteSignal(innerSignal) {

						self.startNextSignalProducer(nextSignalProducer)
					}

				default:
					self.observer.put(event)
				}

/// values), according to the semantics of the given strategy.
///
/// If `signal` or an active inner producer emits an error, the returned
/// producer will forward that error immediately. `Interrupted` events on inner
/// producers will be silently dropped.
public func flatten<T, E>(strategy: FlattenStrategy)(producer: Signal<SignalProducer<T, E>, E>) -> Signal<T, E> {
	switch strategy {
	case .Merge:
