                 Tracker.afterFlush (=> @remergeQueries()), Number.POSITIVE_INFINITY
 
 
-    _deleteComputationQsRequests: (computation) ->
-        return if not computation._requestingData
-        for qsString in _.keys @_requestersByQs
-            delete @_requestersByQs[qsString][computation._id]
-            if _.isEmpty @_requestersByQs[qsString]
-                delete @_requestersByQs[qsString]
-        computation._requestingData = false
-        @_requestsChanged = true
-        Tracker.afterFlush (=> @remergeQueries()), Number.POSITIVE_INFINITY
-
-
     requestQuery: (querySpec) ->
         J.assert Tracker.active
 

    # Snapshot of what we last successfully asked the server for
    _unmergedQsSet: {} # mergedQuerySpecString: true
    _mergedQsSet: {} # mergedQuerySpecString: true


    checkQuerySpec: (querySpec) ->



    isQueryReady: (qs) ->
        qsString = EJSON.stringify qs
        modelClass = J.models[qs.modelName]

        qs = J.util.deepClone qs
        if not J.util.isPlainObject qs.selector
            # Note that this makes qs inconsistent with qsString
            qs.selector = _id: qs.selector

        helper = =>
            return true if qsString of @_unmergedQsSet and qsString of @_nextUnmergedQsSet

            if _.isString(qs.selector._id) and qs.selector._id of modelClass.collection._attachedInstances
                # For queries with an _id filter, say it's ready as long as minimongo
                # has an attached entry with that _id and no other parts of the selector
                # rule out the one possible match.
                options = @_qsToFindOptions(qs)
                options.transform = false
                options.reactive = false
                return modelClass.findOne(qs.selector, options)?

            false

        ret = helper()
        if ret is false then console.log 'isQueryReady', ret, qsString
        ret


