     "http://suggestqueries.google.com/complete/search?ss_protocol=legace&client=toolbar&q=#{Utils.createSearchQuery queryTerms}"
 
   parse: (xhr) ->
-    try
-      for suggestion in xhr.responseXML.getElementsByTagName "suggestion"
-        continue unless suggestion = suggestion.getAttribute "data"
-        suggestion
-    catch
-      []
+    for suggestion in xhr.responseXML.getElementsByTagName "suggestion"
+      continue unless suggestion = suggestion.getAttribute "data"
+      suggestion
 
 class Youtube extends RegexpEngine
   constructor: ->


    engine = @lookupEngine searchUrl
    url = engine.getUrl queryTerms
    @get searchUrl, url, (xhr = null) =>
      if xhr?
        # We keep at most three suggestions, the top three.  These are most likely to be useful.
        callback @completionCache.set completionCacheKey, engine.parse(xhr)[...3]
      else
        callback @completionCache.set completionCacheKey, callback []
        # We cache failures, but remove them after just ten minutes.  This (it is hoped) avoids repeated
        # XMLHttpRequest failures over a short period of time.

    "http://suggestqueries.google.com/complete/search?client=youtube&ds=yt&q=#{Utils.createSearchQuery queryTerms}"

  parse: (xhr) ->
    text = xhr.responseText
    text = text.replace /^[^(]*\(/, ""
    text = text.replace /\)[^\)]*$/, ""
    suggestion[0] for suggestion in JSON.parse(text)[1]

class Wikipedia extends RegexpEngine
  constructor: ->
    super [ new RegExp "https?://[a-z]+\.wikipedia\.org/" ]

  getUrl: (queryTerms) ->
    "https://en.wikipedia.org/w/api.php?action=opensearch&format=json&search=#{Utils.createSearchQuery queryTerms}"

  parse: (xhr) ->
    JSON.parse(xhr.responseText)[1]

# A dummy search engine which is guaranteed to match any search URL, but never produces completions.  This
# allows the rest of the logic to be written knowing that there will be a search engine match.
