 
 			withLock(self.condition) { () -> () in
 				self.state = PromiseState.Done { () -> T in result }
-				self.condition.broadcast()
 			}
 
 			return result

				case let .Unresolved(work):
					self.state = .Resolving
					return work
				case let .Done(result):
					fallthrough
				case .Resolving:

			
			withLock(self.condition) { () -> () in
				self.state = PromiseState.Done { result }
			}
		}
	}
	
	func result() -> T {
		let (maybeWork: (() -> T)?, maybeResult: T?) = withLock(self.condition) {
			while self.state.isResolving {
				self.condition.wait()
			}

