 							aggregate.appendData(data)
 						}, failed: { error in
 							observer.sendFailed(error)
-							stderrAggregatedObserver.sendFailed(error)
+							stderrAggregated.value = .Failed(error)
 						}, completed: {
-							stderrAggregatedObserver.sendNext(aggregate)
-							stderrAggregatedObserver.sendCompleted()
-						}, interrupted: stderrAggregatedObserver.sendInterrupted
-						))
+							stderrAggregated.value = .Value(aggregate)
+						}, interrupted: {
+							stderrAggregated.value = .Interrupted
+						}))
 					}
 
 					rawTask.standardOutput = stdoutPipe.writeHandle

							aggregate.appendData(data)
						}, failed: { error in
							observer.sendFailed(error)
							stdoutAggregatedObserver.sendFailed(error)
						}, completed: {
							stdoutAggregatedObserver.sendNext(aggregate)
							stdoutAggregatedObserver.sendCompleted()
						}, interrupted: stdoutAggregatedObserver.sendInterrupted
						))
					}

					stderrProducer.startWithSignal { signal, signalDisposable in


					dispatch_group_enter(group)
					rawTask.terminationHandler = { nstask in
						func getProducer(property: MutableProperty<Aggregation?>) -> SignalProducer<NSData, TaskError> {
							return property.producer
								.ignoreNil()
								.promoteErrors(TaskError.self)
								.flatMap(.Concat) { $0.producer }
						}
						let stdoutAggregatedProducer = getProducer(stdoutAggregated)
						let stderrAggregatedProducer = getProducer(stderrAggregated)

						let terminationStatus = nstask.terminationStatus
						if terminationStatus == EXIT_SUCCESS {
							// Wait for stderr to finish, then pass
							// through stdout.
							disposable += stderrAggregatedProducer
								.then(stdoutAggregatedProducer)
								.map(TaskEvent.Success)
								.start(observer)
						} else {
							// Wait for stdout to finish, then pass
							// through stderr.
							disposable += stdoutAggregatedProducer
								.then(stderrAggregatedProducer)
								.flatMap(.Concat) { data -> SignalProducer<TaskEvent<NSData>, TaskError> in
									let errorString = (data.length > 0 ? NSString(data: data, encoding: NSUTF8StringEncoding) as? String : nil)
									return SignalProducer(error: .ShellTaskFailed(task, exitCode: terminationStatus, standardError: errorString))
