         }
         for values in response.data
           collection.push @_MakeInstanceFromRemote(values)
-        collection.$_getPromiseForItems().then ->
-          collection.$meta.deferred.resolve(collection)
-        collection.$meta.deferred_direct.resolve(collection)
+        collection.$finalize()
       collection
 
     @Search: (field, value, opts={}) ->

            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 = []

      collection = []
      collection.$meta =
        model: @
        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 = ->
