 			doSend?()
 		}
 		return signal.observe(next: { value in
-			let (_, (scheduleDate: NSDate, compositeDisposable: CompositeDisposable)) = state.modify { state in
-				
-				var newState = state
-				newState.pendingValue = value
+			let (_, (scheduleDate: NSDate, compositeDisposable: CompositeDisposable)) = state.modify { ( var state) in
 				
 				let now = scheduler.currentDate
 				let prev = state.previousDate

	return Signal { observer in
		let state = Atomic(ThrottleState<T>())
		let flush: () -> Void = {
			let (_, doSend: (() -> Void)?) = state.modify { state in
				if let value = state.pendingValue {
					let now = scheduler.currentDate
					return (ThrottleState(previousDate: now, pendingValue: nil, scheduleDisposable: nil), { sendNext(observer, value) })
				} else {
					return (state, nil)
				}

				}
				
				let compositeDisposable = CompositeDisposable()
				state.scheduleDisposable = ScopedDisposable(compositeDisposable)
				state.pendingValue = value
				return (state, (scheduleDate, compositeDisposable))
			}

			let disposableFromScheduler = scheduler.scheduleAfter(scheduleDate) {
