         else
             this.sync('read', this, options)
 
+    getOrFetch: (id, options) ->
+        @get(id) || @fetchId(id, options)
+
     # Fetch a single model with the given id
     fetchId: (id, options = {}) ->
+        return if id == @requestInProgress?.query?[@model::idAttribute]
         this.sync('read', this, _.extend({
             limit: 1, query: {"#{@model::idAttribute}": id}
         }, options))

            )
            return this
        )

}


                    break
            break if found != -1
        found

    sum: ->
        args = _.toArray(arguments)
        args.unshift(this.models)
        return _.sum.apply(_, args)

    # convenience method to create a new subCollection
    subcollection: (options) ->
