     this.maxAnnotationDocumentsToLoad = 1
     this.apiVersion = 'v1'
     this.asynchronousRequest = !synchronousRequest
+    this.waitingForApi = false
+    this.requestNextDocumentCallback = undefined
 
     this.initAjax()
-    # this.loadAnnotationDocuments()
+    this.loadAnnotationDocuments()
 
   # external API:
 
   requestNextDocumentPayload: (calleeCallback) ->
-    unless this.currentDocument
+    if this.waitingForApi
+      # hook into a running request if one if being processed right now
+      _this.requestNextDocumentCallback = calleeCallback
+      return true
+
+    else unless this.currentDocument
+      # no annotation document is currently being processed
       nextDocument = this.next()
+
+      # an annotation document is already preloaded
       calleeCallback(nextDocument) if nextDocument
+
+      # request a new annotation document if none was preloaded
       this.loadAnnotationDocuments calleeCallback unless nextDocument
       return true
     false

      }
    }

    responseProcessor = (data) ->
      _this.documentStore.push annotationDocument for annotationDocument in data
    this.apiCall requestOptions, responseProcessor, postUpdateCallback

  next: ->

      async: _this.asynchronousRequest,
      success: (data) ->
        responseProcessor(data) if responseProcessor
        if _this.requestNextDocumentCallback
          _this.requestNextDocumentCallback _this.next()
          _this.requestNextDocumentCallback = undefined
        else if postUpdateCallback
          postUpdateCallback _this.next()
      error: (a, b, c) ->
        console.log "error requesting the annotation documents API " +
                    "(#{b} #{a.status}; #{c}) - request options & jqXHR:"
