         let searchResult = MWKSearchResult(articleID: 0, revID: 0, displayTitle: title, wikidataDescription: article.wikidataDescription, extract: article.snippet, thumbnailURL: article.thumbnailURL, index: nil, isDisambiguation: false, isList: false, titleNamespace: nil)
         currentSearch = PlaceSearch(filter: currentSearchFilter, type: .location, sortStyle: .links, string: nil, region: region, localizedDescription: title, searchResult: searchResult)
     }
+    
+    private func searchForFirstSearchSuggestion() {
+        if searchSuggestionController.searches[3].count > 0 {
+            currentSearch = searchSuggestionController.searches[3][0]
+        } else if searchSuggestionController.searches[2].count > 0 {
+            currentSearch = searchSuggestionController.searches[2][0]
+        }
+    }
+    
+    private var isGoingToSearchForFirstSearchSuggestionAfterUpdate = false
+    
+    private var isWaitingForSearchSuggestionUpdate = false {
+        didSet {
+            if !isWaitingForSearchSuggestionUpdate && isGoingToSearchForFirstSearchSuggestionAfterUpdate {
+                isGoingToSearchForFirstSearchSuggestionAfterUpdate = false
+                searchForFirstSearchSuggestion()
+            }
+        }
+    }
 
     func updateSearchCompletionsFromSearchBarText() {
         guard let text = searchBar?.text?.trimmingCharacters(in: NSCharacterSet.whitespacesAndNewlines), text != "" else {
             updateSearchSuggestions(withCompletions: [])
+            self.isWaitingForSearchSuggestionUpdate = false
             return
         }
         searchFetcher.fetchArticles(forSearchTerm: text, siteURL: siteURL, resultLimit: 24, failure: { (error) in

    
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        updateSearchSuggestions(withCompletions: searchSuggestionController.searches[3])
        NSObject.cancelPreviousPerformRequests(withTarget: self)
        perform(#selector(updateSearchCompletionsFromSearchBarText), with: nil, afterDelay: 0.2)
    }

                return
            }
            self.updateSearchSuggestions(withCompletions: [])
            self.isWaitingForSearchSuggestionUpdate = false
        }) { (searchResult) in
            guard text == self.searchBar?.text else {
                return
            }
            
            let completions = self.handleCompletion(searchResults: searchResult.results ?? [])
            self.isWaitingForSearchSuggestionUpdate = false
            guard completions.count < 10 else {
                return
            }
