 				//    It ensures the termination event sent concurrently that are not
 				//    caught by (1) due to data races would still be processed.
 				//
-				// The related PR on the data race:
+				// The related PR on the race conditions:
 				// https://github.com/ReactiveCocoa/ReactiveSwift/pull/112
 
 				signal.sendLock.lock()

				// purposes:
				//
				// 1. Within the main protected section
				//    It guarantees that recursive termination event, synchronously sent
				//    by a downstream consumer, is immediately processed and need not
				//    compete with concurrent pending senders (if any).
				//
				//    Termination events sent concurrently may also be caught here, but
				//    not necessarily all of them due to data races.

				if case let .alive(state) = signal.status {
					state.send(event)

					// Check if the status has been bumped to `terminating` due to a
					// concurrent or a recursive termination event.
					//
					// Note that as the check happens before acquiring `statusLock`, it
					// could be a false positive, and thus a second check after the lock
					// is acquired is mandatory.
					if case .terminating = signal.status {
						// Acquire `statusLock`. If the termination has still not yet been
						// handled, take it over and bump the status to `terminated`.
						signal.statusLock.lock()

						if case let .terminating(state) = signal.status {
							signal.status = .terminated
							signal.statusLock.unlock()

							state.sendTerminated()
							shouldDispose = true
						} else {
