var lastRequest: NSURLSessionTask? private var numberOfRetries = 0 func newSearchString(word: String) { cancel_block(lastScheduledWord) lastRequest?.cancel() lastRequest = nil lastScheduledWord = dispatch_after_delay(THROTTLE_SECONDS) { self.lastRequest = fetchWord(word, success: { result in self.displayResult(word, result) }, failure: { error in if self.numberOfRetries++ < NUMBER_OF_RETRIES { self.newSearchString(word) } else { self.numberOfRetries = 0 self.displayError(error) } }) } }