diff --git a/src/core/worker.js b/src/core/worker.js
index 91101f62f..2b85412d7 100644
--- a/src/core/worker.js
+++ b/src/core/worker.js
@@ -234,7 +234,11 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
       PDFJS.disableCreateObjectURL = data.disableCreateObjectURL;
       PDFJS.verbosity = data.verbosity;
 
-      getPdfManager(data).then(function pdfManagerReady() {
+      getPdfManager(data).then(function () {
+        pdfManager.onLoadedStream().then(function(stream) {
+          handler.send('DataLoaded', { length: stream.bytes.byteLength });
+        });
+      }).then(function pdfManagerReady() {
         loadDocument(false).then(onSuccess, function loadFailure(ex) {
           // Try again with recoveryMode == true
           if (!(ex instanceof XRefParseException)) {
@@ -301,12 +305,6 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
       });
     });
 
-    handler.on('DataLoaded', function wphSetupDataLoaded(data, deferred) {
-      pdfManager.onLoadedStream().then(function(stream) {
-        deferred.resolve({ length: stream.bytes.byteLength });
-      });
-    });
-
     handler.on('UpdatePassword', function wphSetupUpdatePassword(data) {
       pdfManager.updatePassword(data);
     });
diff --git a/src/display/api.js b/src/display/api.js
index 41033b5a2..74f0bec6a 100644
--- a/src/display/api.js
+++ b/src/display/api.js
@@ -302,10 +302,11 @@ var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
     },
     /**
      * @return {Promise} A promise that is resolved when the document's data
-     * is loaded
+     * is loaded. It is resolved with an {Object} that contains the length
+     * property that indicates size of the PDF data in bytes.
      */
-    dataLoaded: function PDFDocumentProxy_dataLoaded() {
-      return this.transport.dataLoaded();
+    getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() {
+      return this.transport.downloadInfoPromise;
     },
     /**
      * Cleans up resources allocated by the document, e.g. created @font-face.
@@ -578,7 +579,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
     this.pageCache = [];
     this.pagePromises = [];
     this.embeddedFontsUsed = false;
-
+    this.downloadInfoPromise = new PDFJS.LegacyPromise();
     this.passwordCallback = null;
 
     // If worker support isn't disabled explicit and the browser has worker
@@ -758,6 +759,10 @@ var WorkerTransport = (function WorkerTransportClosure() {
         this.workerReadyPromise.reject(data.exception.message, data.exception);
       }, this);
 
+      messageHandler.on('DataLoaded', function transportPage(data) {
+        this.downloadInfoPromise.resolve(data);
+      }, this);
+
       messageHandler.on('GetPage', function transportPage(data) {
         var pageInfo = data.pageInfo;
         var page = new PDFPageProxy(pageInfo, this);
@@ -924,18 +929,6 @@ var WorkerTransport = (function WorkerTransportClosure() {
       });
     },
 
-    dataLoaded: function WorkerTransport_dataLoaded() {
-      if (this.dataLoadedPromise) {
-        return this.dataLoadedPromise;
-      }
-      var promise = new PDFJS.LegacyPromise();
-      this.messageHandler.send('DataLoaded', null, function(args) {
-        promise.resolve(args);
-      });
-      this.dataLoadedPromise = promise;
-      return promise;
-    },
-
     getPage: function WorkerTransport_getPage(pageNumber, promise) {
       var pageIndex = pageNumber - 1;
       if (pageIndex in this.pagePromises)
diff --git a/web/document_properties.js b/web/document_properties.js
index 5dfeef3f7..050865734 100644
--- a/web/document_properties.js
+++ b/web/document_properties.js
@@ -76,7 +76,7 @@ var DocumentProperties = {
     this.fileName = getPDFFileNameFromURL(PDFView.url);
 
     // Get the file size.
-    PDFView.pdfDocument.dataLoaded().then(function(data) {
+    PDFView.pdfDocument.getDownloadInfo().then(function(data) {
       self.setFileSize(data.length);
     });
 
diff --git a/web/viewer.js b/web/viewer.js
index ef3fc9a7b..377b704c2 100644
--- a/web/viewer.js
+++ b/web/viewer.js
@@ -847,7 +847,7 @@ var PDFView = {
     var errorWrapper = document.getElementById('errorWrapper');
     errorWrapper.setAttribute('hidden', 'true');
 
-    pdfDocument.dataLoaded().then(function() {
+    pdfDocument.getDownloadInfo().then(function() {
       PDFView.loadingBar.hide();
       var outerContainer = document.getElementById('outerContainer');
       outerContainer.classList.remove('loadingInProgress');