     }
     
     func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
-        currentSearch = PlaceSearch(filter: currentSearchFilter, type: .text, sortStyle: .links, string: searchBar.text, region: nil, localizedDescription: searchBar.text, searchResult: nil)
         searchBar.endEditing(true)
+        guard !isWaitingForSearchSuggestionUpdate else {
+            isGoingToSearchForFirstSearchSuggestionAfterUpdate = true
+            return
+        }
+        searchForFirstSearchSuggestion()
     }
     
     func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {

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

        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
