 				//    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()

					signal.statusLock.unlock()

					if signal.sendLock.try() {
						// Is it terminating? (False positive is allowed.)
						if case .terminating = signal.status {
							// Acquire `statusLock`, and handle the termination if the signal
							// is still at `terminating` state.
							signal.statusLock.lock()
							if case let .terminating(state) = signal.status {
								signal.status = .terminated
								signal.statusLock.unlock()
								state.sendTerminated()
							} else {
								signal.statusLock.unlock()
							}
						}
						signal.sendLock.unlock()
						signal.swapDisposable()?.dispose()
					}

				// purposes:
				//
				// 1. Within the main protected section
				//    It guarantees that a recursive termination event 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.
