diff --git a/web/pdf_find_controller.js b/web/pdf_find_controller.js
index 3ae4424bb..92416330e 100644
--- a/web/pdf_find_controller.js
+++ b/web/pdf_find_controller.js
@@ -251,6 +251,11 @@ class PDFFindController {
           // Store the pageContent as a string.
           this.pageContents[i] = strBuf.join('');
           extractTextCapability.resolve(i);
+        }, (reason) => {
+          console.error(`Unable to get page ${i + 1} text content`, reason);
+          // Page error -- assuming no text content.
+          this.pageContents[i] = '';
+          extractTextCapability.resolve(i);
         });
       });
     }
diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js
index d6b499ecf..5c1f16005 100644
--- a/web/pdf_page_view.js
+++ b/web/pdf_page_view.js
@@ -56,6 +56,7 @@ class PDFPageView {
     this.id = options.id;
     this.renderingId = 'page' + this.id;
 
+    this.pdfPage = null;
     this.pageLabel = null;
     this.rotation = 0;
     this.scale = options.scale || DEFAULT_SCALE;
@@ -110,6 +111,7 @@ class PDFPageView {
     this.reset();
     if (this.pdfPage) {
       this.pdfPage.cleanup();
+      this.pdfPage = null;
     }
   }
 
@@ -341,6 +343,11 @@ class PDFPageView {
       this.reset(); // Ensure that we reset all state to prevent issues.
     }
 
+    if (!this.pdfPage) {
+      this.renderingState = RenderingStates.FINISHED;
+      return Promise.reject(new Error('Page is not loaded'));
+    }
+
     this.renderingState = RenderingStates.RUNNING;
 
     let pdfPage = this.pdfPage;
diff --git a/web/pdf_thumbnail_viewer.js b/web/pdf_thumbnail_viewer.js
index 6892d4633..d0ecb469a 100644
--- a/web/pdf_thumbnail_viewer.js
+++ b/web/pdf_thumbnail_viewer.js
@@ -133,10 +133,10 @@ class PDFThumbnailViewer {
 
     this.pdfDocument = pdfDocument;
     if (!pdfDocument) {
-      return Promise.resolve();
+      return;
     }
 
-    return pdfDocument.getPage(1).then((firstPage) => {
+    pdfDocument.getPage(1).then((firstPage) => {
       let pagesCount = pdfDocument.numPages;
       let viewport = firstPage.getViewport(1.0);
       for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {
@@ -151,6 +151,8 @@ class PDFThumbnailViewer {
         });
         this._thumbnails.push(thumbnail);
       }
+    }).catch((reason) => {
+      console.error('Unable to initialize thumbnail viewer', reason);
     });
   }
 
@@ -205,6 +207,10 @@ class PDFThumbnailViewer {
       thumbView.setPdfPage(pdfPage);
       this._pagesRequests[pageNumber] = null;
       return pdfPage;
+    }).catch((reason) => {
+      console.error('Unable to get page for thumb view', reason);
+      // Page error -- there is nothing can be done.
+      this._pagesRequests[pageNumber] = null;
     });
     this._pagesRequests[pageNumber] = promise;
     return promise;
diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js
index fbe1bf780..bffe3ff0b 100644
--- a/web/pdf_viewer.js
+++ b/web/pdf_viewer.js
@@ -341,7 +341,7 @@ class PDFViewer {
 
     // Fetch a single page so we can get a viewport that will be the default
     // viewport for all pages
-    return firstPagePromise.then((pdfPage) => {
+    firstPagePromise.then((pdfPage) => {
       let scale = this.currentScale;
       let viewport = pdfPage.getViewport(scale * CSS_UNITS);
       for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {
@@ -387,6 +387,12 @@ class PDFViewer {
             if (--getPagesLeft === 0) {
               pagesCapability.resolve();
             }
+          }, (reason) => {
+            console.error(`Unable to get page ${pageNum} to initialize viewer`,
+                          reason);
+            if (--getPagesLeft === 0) {
+              pagesCapability.resolve();
+            }
           });
         }
       });
@@ -400,6 +406,8 @@ class PDFViewer {
       if (this.findController) {
         this.findController.resolveFirstPage();
       }
+    }).catch((reason) => {
+      console.error('Unable to initialize viewer', reason);
     });
   }
 
@@ -838,6 +846,10 @@ class PDFViewer {
       }
       this._pagesRequests[pageNumber] = null;
       return pdfPage;
+    }).catch((reason) => {
+      console.error('Unable to get page for page view', reason);
+      // Page error -- there is nothing can be done.
+      this._pagesRequests[pageNumber] = null;
     });
     this._pagesRequests[pageNumber] = promise;
     return promise;