       collection = []
       collection.$meta =
         model: @
-        deferred: $q.defer()
-        deferred_direct: $q.defer()
-      collection.$promise = collection.$meta.deferred.promise
-      collection.$promiseDirect = collection.$meta.deferred_direct.promise
+        async:
+          direct:
+            deferred: $q.defer()
+            resolved: false
+          complete:
+            deferred: $q.defer()
+            resolved: false
+      collection.$promise = collection.$meta.async.complete.deferred.promise
+      collection.$promiseDirect = collection.$meta.async.direct.deferred.promise
       collection.$getItemsPromises = ->
         (instance.$promise for instance in collection)
       collection.$getItemsPromiseDirects = ->

            refs_promises.push record.$promise
          instance[fieldName] = refs_collection
          promises.push refs_collection.$promise
          refs_collection.$_getPromiseForItems().then ->
            refs_collection.$meta.deferred.resolve(refs_collection)
          refs_collection.$meta.deferred_direct.resolve(refs_collection)
        else
          instance[fieldName] = []
      promises = []

        }
        for values in response.data
          collection.push @_MakeInstanceFromRemote(values)
        collection.$finalize()
      collection

    @Search: (field, value, opts={}) ->
