       async: _this.asynchronousRequest,
       success: (data) ->
         responseProcessor(data) if responseProcessor
-        postUpdateCallback _this.next() if postUpdateCallback
+        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:"

    this.maxAnnotationDocumentsToLoad = 1
    this.apiVersion = 'v1'
    this.asynchronousRequest = !synchronousRequest

    this.initAjax()
    # this.loadAnnotationDocuments()

  # external API:

  requestNextDocumentPayload: (calleeCallback) ->
    unless this.currentDocument
      nextDocument = this.next()
      calleeCallback(nextDocument) if nextDocument
      this.loadAnnotationDocuments calleeCallback unless nextDocument
      return true
    false

      }
    }

    this.waitingForApi = true
    responseProcessor = (data) ->
      console.log "AnnotationDocumentManager: loaded new annotation document (id: #{data[0].id})"
      _this.documentStore.push annotationDocument for annotationDocument in data
      _this.waitingForApi = false
    this.apiCall requestOptions, responseProcessor, postUpdateCallback

  next: ->
