 					case Failed(TaskError)
 					case Interrupted
 
-					var producer: SignalProducer<NSData, TaskError> {
+					var producer: Pipe.ReadProducer {
 						switch self {
 						case let .Value(data):
 							return .init(value: data)


/// A private class used to encapsulate a Unix pipe.
private final class Pipe {
	/// The file descriptor for reading data.
	let readFD: Int32



					dispatch_group_enter(group)
					rawTask.terminationHandler = { nstask in
						func getProducer(property: AnyProperty<Aggregation?>) -> Pipe.ReadProducer {
							return property.producer
								.ignoreNil()
								.promoteErrors(TaskError.self)
