 					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()
-							}
+						// 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()
+						} else {
+							signal.statusLock.unlock()
 						}
+
 						signal.sendLock.unlock()
 						signal.swapDisposable()?.dispose()
 					}

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

					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()
							shouldDispose = true
						} else {

				// End of the main protected section.
				signal.sendLock.unlock()

				// Check if the status has been bumped to `terminating` due to a
				// concurrent termination event that has not been caught in the main
				// protected section.
				//
				// 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 !shouldDispose, case .terminating = signal.status {
					signal.sendLock.lock()

					// 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 {
