 			}
 
 			it("should dispose of returned disposable upon error") {
-				var disposed = false
+				let disposable = SimpleDisposable()
 				
 				let signal: Signal<Int, NSError> = Signal { observer in
 					testScheduler.schedule {
 						sendError(observer, testError)
 					}
-					return ActionDisposable {
-						disposed = true
-					}
+					return disposable
 				}
 				
 				var errored = false

				signal.observe(completed: { completed = true })
				
				expect(completed).to(beFalsy())
				expect(disposed).to(beFalsy())
				
				testScheduler.run()
				
				expect(completed).to(beTruthy())
				expect(disposed).to(beTruthy())
			}
		}


				signal.observe(error: { _ in errored = true })
				
				expect(errored).to(beFalsy())
				expect(disposable.disposed).to(beFalsy())
				
				testScheduler.run()
				
				expect(errored).to(beTruthy())
				expect(disposable.disposed).to(beTruthy())
			}

			it("should dispose of returned disposable upon completion") {
				let disposable = SimpleDisposable()
				
				let signal: Signal<Int, NSError> = Signal { observer in
					testScheduler.schedule {
						sendCompleted(observer)
					}
					return disposable
				}
				
				var completed = false
