       @current
   
   @fetch: ->
+    return @currentFetcher if @currentFetcher
     if @queueSize() < @queueMin
-      @fetcher().then(@loadSubjects).then @setCurrent
+      @currentFetcher = @fetcher().then(@loadSubjects).then @setCurrent
     else
       d = deferred()
       d.resolve @current

  @queueMin: 2
  @queue: []
  @current: null
  
  @next: =>
    @current = null

      @queue.push SubjectPair.create(pair)
  
  @setCurrent: =>
    @currentFetcher = null
    @current = @queue.shift()
  
  @fetcher: ->
