   completers: {}
 
   getCompleter: (name) ->
-    @completers[name] ?= new BackgroundCompleter name
+    if !@completers[name]
+      @completers[name] = new BackgroundCompleter(name)
+    return @completers[name]
 
   activate: (userOptions) ->
     options =

class BackgroundCompleter
  # The "name" is the background-page completer to connect to: "omni", "tabs", or "bookmarks".
  constructor: (@name) ->
    @port = chrome.runtime.connect name: "completions"
    @messageId = null
    @reset()

          @update true
      else if 0 < @completions.length
        @selection += 1
        if @selection == @completions.length
          @selection = @initialSelectionValue
        @updateSelection()
    else if (action == "up")
      @selection -= 1
      if @selection < @initialSelectionValue
        @selection = @completions.length - 1
      @updateSelection()
    else if (action == "enter")
      isCustomSearchPrimarySuggestion = @completions[@selection]?.isPrimarySuggestion and @lastReponse.engine?.searchUrl
      if @selection == -1 or isCustomSearchPrimarySuggestion
        query = @input.value.trim()
        # <Enter> on an empty query is a no-op.
        unless query.length > 0
          return
        # First case (@selection == -1).
        # If the user types something and hits enter without selecting a completion from the list, then:
        #   - If a search URL has been provided, then use it.  This is custom search engine request.
