         json: true
         returnsModel: true
       .then (threads) =>
-        return unless @_version is version
+        return unless @_termsVersion is termsVersion
+        resultCount += 1
+        resultIds = resultIds.concat _.pluck(threads, 'id')
 
-        resultIds = resultIds.concat _.pluck(threads, 'id')
-        query = DatabaseStore.findAll(Thread).where(id: resultIds).order(Thread.attributes.lastMessageReceivedTimestamp.descending())
-        @replaceQuery(query)
+        # Don't emit a "result" until we have at least one thread to display.
+        # Otherwise it will show "No Results Found"
+        if resultIds.length > 0 or resultCount is @_accountIds.length
+          query = DatabaseStore.findAll(Thread).where(id: resultIds).order(Thread.attributes.lastMessageReceivedTimestamp.descending())
+          @replaceQuery(query)
 
 module.exports = SearchSubscription

  # Accessing Data

  retrievePage: (idx) =>
    version = @_version += 1
    resultIds = []

    @_accountIds.forEach (aid) =>


  setTerms: (terms) =>
    @_terms = terms
    @_termsVersion += 1
    @retrievePage(0)

  replaceRange: (range) =>
