diff --git a/examples/components/pageviewer.html b/examples/components/pageviewer.html
index 1dd107952..267f8cc29 100644
--- a/examples/components/pageviewer.html
+++ b/examples/components/pageviewer.html
@@ -31,13 +31,13 @@ limitations under the License.
 
   <link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css">
 
-  <script src="../../node_modules/pdfjs-dist/build/pdf.js"></script>
-  <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.js"></script>
+  <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
+  <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script>
 </head>
 
 <body tabindex="1">
   <div id="pageContainer" class="pdfViewer singlePageView"></div>
 
-  <script src="pageviewer.js"></script>
+  <script src="pageviewer.mjs" type="module"></script>
 </body>
 </html>
diff --git a/examples/components/pageviewer.js b/examples/components/pageviewer.mjs
similarity index 69%
rename from examples/components/pageviewer.js
rename to examples/components/pageviewer.mjs
index b8caf439a..7be73dade 100644
--- a/examples/components/pageviewer.js
+++ b/examples/components/pageviewer.mjs
@@ -13,8 +13,6 @@
  * limitations under the License.
  */
 
-"use strict";
-
 if (!pdfjsLib.getDocument || !pdfjsViewer.PDFPageView) {
   // eslint-disable-next-line no-alert
   alert("Please build the pdfjs-dist library using\n  `gulp dist-install`");
@@ -23,7 +21,7 @@ if (!pdfjsLib.getDocument || !pdfjsViewer.PDFPageView) {
 // The workerSrc property shall be specified.
 //
 pdfjsLib.GlobalWorkerOptions.workerSrc =
-  "../../node_modules/pdfjs-dist/build/pdf.worker.js";
+  "../../node_modules/pdfjs-dist/build/pdf.worker.mjs";
 
 // Some PDFs need external cmaps.
 //
@@ -47,20 +45,19 @@ const loadingTask = pdfjsLib.getDocument({
   cMapPacked: CMAP_PACKED,
   enableXfa: ENABLE_XFA,
 });
-(async function () {
-  const pdfDocument = await loadingTask.promise;
-  // Document loaded, retrieving the page.
-  const pdfPage = await pdfDocument.getPage(PAGE_TO_VIEW);
 
-  // Creating the page view with default parameters.
-  const pdfPageView = new pdfjsViewer.PDFPageView({
-    container,
-    id: PAGE_TO_VIEW,
-    scale: SCALE,
-    defaultViewport: pdfPage.getViewport({ scale: SCALE }),
-    eventBus,
-  });
-  // Associate the actual page with the view, and draw it.
-  pdfPageView.setPdfPage(pdfPage);
-  return pdfPageView.draw();
-})();
+const pdfDocument = await loadingTask.promise;
+// Document loaded, retrieving the page.
+const pdfPage = await pdfDocument.getPage(PAGE_TO_VIEW);
+
+// Creating the page view with default parameters.
+const pdfPageView = new pdfjsViewer.PDFPageView({
+  container,
+  id: PAGE_TO_VIEW,
+  scale: SCALE,
+  defaultViewport: pdfPage.getViewport({ scale: SCALE }),
+  eventBus,
+});
+// Associate the actual page with the view, and draw it.
+pdfPageView.setPdfPage(pdfPage);
+pdfPageView.draw();
diff --git a/examples/components/simpleviewer.html b/examples/components/simpleviewer.html
index 1119fd630..e6493263d 100644
--- a/examples/components/simpleviewer.html
+++ b/examples/components/simpleviewer.html
@@ -37,8 +37,8 @@ limitations under the License.
 
   <link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css">
 
-  <script src="../../node_modules/pdfjs-dist/build/pdf.js"></script>
-  <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.js"></script>
+  <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
+  <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script>
 </head>
 
 <body tabindex="1">
@@ -46,6 +46,6 @@ limitations under the License.
     <div id="viewer" class="pdfViewer"></div>
   </div>
 
-  <script src="simpleviewer.js"></script>
+  <script src="simpleviewer.mjs" type="module"></script>
 </body>
 </html>
diff --git a/examples/components/simpleviewer.js b/examples/components/simpleviewer.mjs
similarity index 85%
rename from examples/components/simpleviewer.js
rename to examples/components/simpleviewer.mjs
index 99584f032..88044e733 100644
--- a/examples/components/simpleviewer.js
+++ b/examples/components/simpleviewer.mjs
@@ -13,8 +13,6 @@
  * limitations under the License.
  */
 
-"use strict";
-
 if (!pdfjsLib.getDocument || !pdfjsViewer.PDFViewer) {
   // eslint-disable-next-line no-alert
   alert("Please build the pdfjs-dist library using\n  `gulp dist-install`");
@@ -23,7 +21,7 @@ if (!pdfjsLib.getDocument || !pdfjsViewer.PDFViewer) {
 // The workerSrc property shall be specified.
 //
 pdfjsLib.GlobalWorkerOptions.workerSrc =
-  "../../node_modules/pdfjs-dist/build/pdf.worker.js";
+  "../../node_modules/pdfjs-dist/build/pdf.worker.mjs";
 
 // Some PDFs need external cmaps.
 //
@@ -37,7 +35,10 @@ const DEFAULT_URL = "../../web/compressed.tracemonkey-pldi-09.pdf";
 const ENABLE_XFA = true;
 const SEARCH_FOR = ""; // try "Mozilla";
 
-const SANDBOX_BUNDLE_SRC = "../../node_modules/pdfjs-dist/build/pdf.sandbox.js";
+const SANDBOX_BUNDLE_SRC = new URL(
+  "../../node_modules/pdfjs-dist/build/pdf.sandbox.mjs",
+  window.location
+);
 
 const container = document.getElementById("viewerContainer");
 
@@ -87,11 +88,10 @@ const loadingTask = pdfjsLib.getDocument({
   cMapPacked: CMAP_PACKED,
   enableXfa: ENABLE_XFA,
 });
-(async function () {
-  const pdfDocument = await loadingTask.promise;
-  // Document loaded, specifying document for the viewer and
-  // the (optional) linkService.
-  pdfViewer.setDocument(pdfDocument);
 
-  pdfLinkService.setDocument(pdfDocument, null);
-})();
+const pdfDocument = await loadingTask.promise;
+// Document loaded, specifying document for the viewer and
+// the (optional) linkService.
+pdfViewer.setDocument(pdfDocument);
+
+pdfLinkService.setDocument(pdfDocument, null);
diff --git a/examples/components/singlepageviewer.html b/examples/components/singlepageviewer.html
index 2be6c8b3c..3636dbe77 100644
--- a/examples/components/singlepageviewer.html
+++ b/examples/components/singlepageviewer.html
@@ -37,8 +37,8 @@ limitations under the License.
 
   <link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css">
 
-  <script src="../../node_modules/pdfjs-dist/build/pdf.js"></script>
-  <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.js"></script>
+  <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
+  <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script>
 </head>
 
 <body tabindex="1">
@@ -46,6 +46,6 @@ limitations under the License.
     <div id="viewer" class="pdfViewer"></div>
   </div>
 
-  <script src="singlepageviewer.js"></script>
+  <script src="singlepageviewer.mjs" type="module"></script>
 </body>
 </html>
diff --git a/examples/components/singlepageviewer.js b/examples/components/singlepageviewer.mjs
similarity index 86%
rename from examples/components/singlepageviewer.js
rename to examples/components/singlepageviewer.mjs
index 13076dad1..cf2520701 100644
--- a/examples/components/singlepageviewer.js
+++ b/examples/components/singlepageviewer.mjs
@@ -13,8 +13,6 @@
  * limitations under the License.
  */
 
-"use strict";
-
 if (!pdfjsLib.getDocument || !pdfjsViewer.PDFSinglePageViewer) {
   // eslint-disable-next-line no-alert
   alert("Please build the pdfjs-dist library using\n  `gulp dist-install`");
@@ -23,7 +21,7 @@ if (!pdfjsLib.getDocument || !pdfjsViewer.PDFSinglePageViewer) {
 // The workerSrc property shall be specified.
 //
 pdfjsLib.GlobalWorkerOptions.workerSrc =
-  "../../node_modules/pdfjs-dist/build/pdf.worker.js";
+  "../../node_modules/pdfjs-dist/build/pdf.worker.mjs";
 
 // Some PDFs need external cmaps.
 //
@@ -37,7 +35,10 @@ const DEFAULT_URL = "../../web/compressed.tracemonkey-pldi-09.pdf";
 const ENABLE_XFA = true;
 const SEARCH_FOR = ""; // try "Mozilla";
 
-const SANDBOX_BUNDLE_SRC = "../../node_modules/pdfjs-dist/build/pdf.sandbox.js";
+const SANDBOX_BUNDLE_SRC = new URL(
+  "../../node_modules/pdfjs-dist/build/pdf.sandbox.mjs",
+  window.location
+);
 
 const container = document.getElementById("viewerContainer");
 
@@ -87,10 +88,10 @@ const loadingTask = pdfjsLib.getDocument({
   cMapPacked: CMAP_PACKED,
   enableXfa: ENABLE_XFA,
 });
-loadingTask.promise.then(function (pdfDocument) {
-  // Document loaded, specifying document for the viewer and
-  // the (optional) linkService.
-  pdfSinglePageViewer.setDocument(pdfDocument);
 
-  pdfLinkService.setDocument(pdfDocument, null);
-});
+const pdfDocument = await loadingTask.promise;
+// Document loaded, specifying document for the viewer and
+// the (optional) linkService.
+pdfSinglePageViewer.setDocument(pdfDocument);
+
+pdfLinkService.setDocument(pdfDocument, null);
diff --git a/examples/image_decoders/jpeg_viewer.html b/examples/image_decoders/jpeg_viewer.html
index 47af71b0d..87f757bd6 100644
--- a/examples/image_decoders/jpeg_viewer.html
+++ b/examples/image_decoders/jpeg_viewer.html
@@ -29,12 +29,12 @@ limitations under the License.
     }
   </style>
 
-  <script src="../../node_modules/pdfjs-dist/image_decoders/pdf.image_decoders.js"></script>
+  <script src="../../node_modules/pdfjs-dist/image_decoders/pdf.image_decoders.mjs" type="module"></script>
 </head>
 
 <body tabindex="1">
   <canvas id="jpegCanvas" width="0" height="0"></canvas>
 
-  <script src="jpeg_viewer.js"></script>
+  <script src="jpeg_viewer.mjs" type="module"></script>
 </body>
 </html>
diff --git a/examples/image_decoders/jpeg_viewer.js b/examples/image_decoders/jpeg_viewer.js
deleted file mode 100644
index e5f3394cd..000000000
--- a/examples/image_decoders/jpeg_viewer.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2018 Mozilla Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-"use strict";
-
-if (!pdfjsImageDecoders.JpegImage) {
-  // eslint-disable-next-line no-alert
-  alert("Please build the pdfjs-dist library using `gulp dist-install`");
-}
-
-const JPEG_IMAGE = "fish.jpg";
-
-const jpegCanvas = document.getElementById("jpegCanvas");
-const jpegCtx = jpegCanvas.getContext("2d");
-
-(async function () {
-  // Load the image data, and convert it to a Uint8Array.
-  //
-  const response = await fetch(JPEG_IMAGE);
-  if (!response.ok) {
-    throw new Error(response.statusText);
-  }
-  const typedArrayImage = new Uint8Array(await response.arrayBuffer());
-
-  // Parse the image data using `JpegImage`.
-  //
-  const jpegImage = new pdfjsImageDecoders.JpegImage();
-  jpegImage.parse(typedArrayImage);
-
-  const width = jpegImage.width,
-    height = jpegImage.height;
-  const jpegData = jpegImage.getData({
-    width,
-    height,
-    forceRGB: true,
-  });
-
-  // Render the JPEG image on a <canvas>.
-  //
-  const imageData = jpegCtx.createImageData(width, height);
-  const imageBytes = imageData.data;
-  for (let j = 0, k = 0, jj = width * height * 4; j < jj; ) {
-    imageBytes[j++] = jpegData[k++];
-    imageBytes[j++] = jpegData[k++];
-    imageBytes[j++] = jpegData[k++];
-    imageBytes[j++] = 255;
-  }
-  jpegCanvas.width = width;
-  jpegCanvas.height = height;
-  jpegCtx.putImageData(imageData, 0, 0);
-})();
diff --git a/examples/image_decoders/jpeg_viewer.mjs b/examples/image_decoders/jpeg_viewer.mjs
new file mode 100644
index 000000000..9aba66cc1
--- /dev/null
+++ b/examples/image_decoders/jpeg_viewer.mjs
@@ -0,0 +1,59 @@
+/* Copyright 2018 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+if (!pdfjsImageDecoders.JpegImage) {
+  // eslint-disable-next-line no-alert
+  alert("Please build the pdfjs-dist library using `gulp dist-install`");
+}
+
+const JPEG_IMAGE = "fish.jpg";
+
+const jpegCanvas = document.getElementById("jpegCanvas");
+const jpegCtx = jpegCanvas.getContext("2d");
+
+// Load the image data, and convert it to a Uint8Array.
+//
+const response = await fetch(JPEG_IMAGE);
+if (!response.ok) {
+  throw new Error(response.statusText);
+}
+const typedArrayImage = new Uint8Array(await response.arrayBuffer());
+
+// Parse the image data using `JpegImage`.
+//
+const jpegImage = new pdfjsImageDecoders.JpegImage();
+jpegImage.parse(typedArrayImage);
+
+const width = jpegImage.width,
+  height = jpegImage.height;
+const jpegData = jpegImage.getData({
+  width,
+  height,
+  forceRGB: true,
+});
+
+// Render the JPEG image on a <canvas>.
+//
+const imageData = jpegCtx.createImageData(width, height);
+const imageBytes = imageData.data;
+for (let j = 0, k = 0, jj = width * height * 4; j < jj; ) {
+  imageBytes[j++] = jpegData[k++];
+  imageBytes[j++] = jpegData[k++];
+  imageBytes[j++] = jpegData[k++];
+  imageBytes[j++] = 255;
+}
+jpegCanvas.width = width;
+jpegCanvas.height = height;
+jpegCtx.putImageData(imageData, 0, 0);
diff --git a/examples/learning/helloworld.html b/examples/learning/helloworld.html
index 7a3a71d9b..6a74298f8 100644
--- a/examples/learning/helloworld.html
+++ b/examples/learning/helloworld.html
@@ -10,9 +10,9 @@
 
 <canvas id="the-canvas" style="border: 1px solid black; direction: ltr;"></canvas>
 
-<script src="../../node_modules/pdfjs-dist/build/pdf.js"></script>
+<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
 
-<script id="script">
+<script id="script" type="module">
   //
   // If absolute URL from the remote server is provided, configure the CORS
   // header on that server.
@@ -23,48 +23,46 @@
   // The workerSrc property shall be specified.
   //
   pdfjsLib.GlobalWorkerOptions.workerSrc =
-    '../../node_modules/pdfjs-dist/build/pdf.worker.js';
+    '../../node_modules/pdfjs-dist/build/pdf.worker.mjs';
 
   //
   // Asynchronous download PDF
   //
   const loadingTask = pdfjsLib.getDocument(url);
-  (async () => {
-    const pdf = await loadingTask.promise;
-    //
-    // Fetch the first page
-    //
-    const page = await pdf.getPage(1);
-    const scale = 1.5;
-    const viewport = page.getViewport({ scale });
-    // Support HiDPI-screens.
-    const outputScale = window.devicePixelRatio || 1;
+  const pdf = await loadingTask.promise;
+  //
+  // Fetch the first page
+  //
+  const page = await pdf.getPage(1);
+  const scale = 1.5;
+  const viewport = page.getViewport({ scale });
+  // Support HiDPI-screens.
+  const outputScale = window.devicePixelRatio || 1;
 
-    //
-    // Prepare canvas using PDF page dimensions
-    //
-    const canvas = document.getElementById("the-canvas");
-    const context = canvas.getContext("2d");
+  //
+  // Prepare canvas using PDF page dimensions
+  //
+  const canvas = document.getElementById("the-canvas");
+  const context = canvas.getContext("2d");
 
-    canvas.width = Math.floor(viewport.width * outputScale);
-    canvas.height = Math.floor(viewport.height * outputScale);
-    canvas.style.width = Math.floor(viewport.width) + "px";
-    canvas.style.height = Math.floor(viewport.height) + "px";
+  canvas.width = Math.floor(viewport.width * outputScale);
+  canvas.height = Math.floor(viewport.height * outputScale);
+  canvas.style.width = Math.floor(viewport.width) + "px";
+  canvas.style.height = Math.floor(viewport.height) + "px";
 
-    const transform = outputScale !== 1 
-      ? [outputScale, 0, 0, outputScale, 0, 0] 
-      : null;
+  const transform = outputScale !== 1
+    ? [outputScale, 0, 0, outputScale, 0, 0]
+    : null;
 
-    //
-    // Render PDF page into canvas context
-    //
-    const renderContext = {
-      canvasContext: context,
-      transform,
-      viewport,
-    };
-    page.render(renderContext);
-  })();
+  //
+  // Render PDF page into canvas context
+  //
+  const renderContext = {
+    canvasContext: context,
+    transform,
+    viewport,
+  };
+  page.render(renderContext);
 </script>
 
 <hr>
diff --git a/examples/learning/helloworld64.html b/examples/learning/helloworld64.html
index 3abf5b538..ed98e189f 100644
--- a/examples/learning/helloworld64.html
+++ b/examples/learning/helloworld64.html
@@ -10,9 +10,9 @@
 
 <canvas id="the-canvas" style="border: 1px solid black; direction: ltr;"></canvas>
 
-<script src="../../node_modules/pdfjs-dist/build/pdf.js"></script>
+<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
 
-<script id="script">
+<script id="script" type="module">
   // atob() is used to convert base64 encoded PDF to binary-like data.
   // (See also https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/
   // Base64_encoding_and_decoding.)
@@ -35,41 +35,39 @@
   // The workerSrc property shall be specified.
   //
   pdfjsLib.GlobalWorkerOptions.workerSrc =
-    '../../node_modules/pdfjs-dist/build/pdf.worker.js';
+    '../../node_modules/pdfjs-dist/build/pdf.worker.mjs';
 
   // Opening PDF by passing its binary data as a string. It is still preferable
   // to use Uint8Array, but string or array-like structure will work too.
   var loadingTask = pdfjsLib.getDocument({ data: pdfData, });
-  (async function() {
-    var pdf = await loadingTask.promise;
-    // Fetch the first page.
-    var page = await pdf.getPage(1);
-    var scale = 1.5;
-    var viewport = page.getViewport({ scale: scale, });
-    // Support HiDPI-screens.
-    var outputScale = window.devicePixelRatio || 1;
+  var pdf = await loadingTask.promise;
+  // Fetch the first page.
+  var page = await pdf.getPage(1);
+  var scale = 1.5;
+  var viewport = page.getViewport({ scale: scale, });
+  // Support HiDPI-screens.
+  var outputScale = window.devicePixelRatio || 1;
 
-    // Prepare canvas using PDF page dimensions.
-    var canvas = document.getElementById('the-canvas');
-    var context = canvas.getContext('2d');
+  // Prepare canvas using PDF page dimensions.
+  var canvas = document.getElementById('the-canvas');
+  var context = canvas.getContext('2d');
 
-    canvas.width = Math.floor(viewport.width * outputScale);
-    canvas.height = Math.floor(viewport.height * outputScale);
-    canvas.style.width = Math.floor(viewport.width) + "px";
-    canvas.style.height =  Math.floor(viewport.height) + "px";
+  canvas.width = Math.floor(viewport.width * outputScale);
+  canvas.height = Math.floor(viewport.height * outputScale);
+  canvas.style.width = Math.floor(viewport.width) + "px";
+  canvas.style.height =  Math.floor(viewport.height) + "px";
 
-    var transform = outputScale !== 1
-      ? [outputScale, 0, 0, outputScale, 0, 0]
-      : null;
+  var transform = outputScale !== 1
+    ? [outputScale, 0, 0, outputScale, 0, 0]
+    : null;
 
-    // Render PDF page into canvas context.
-    var renderContext = {
-      canvasContext: context,
-      transform,
-      viewport,
-    };
-    page.render(renderContext);
-  })();
+  // Render PDF page into canvas context.
+  var renderContext = {
+    canvasContext: context,
+    transform,
+    viewport,
+  };
+  page.render(renderContext);
 </script>
 
 <hr>
diff --git a/examples/learning/prevnext.html b/examples/learning/prevnext.html
index c1cb0240f..40c1488c8 100644
--- a/examples/learning/prevnext.html
+++ b/examples/learning/prevnext.html
@@ -19,9 +19,9 @@
   <canvas id="the-canvas" style="border: 1px solid black; direction: ltr;"></canvas>
 </div>
 
-<script src="../../node_modules/pdfjs-dist/build/pdf.js"></script>
+<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
 
-<script id="script">
+<script id="script" type="module">
   //
   // If absolute URL from the remote server is provided, configure the CORS
   // header on that server.
@@ -34,7 +34,7 @@
   // shall be specified.
   //
   pdfjsLib.GlobalWorkerOptions.workerSrc =
-    '../../node_modules/pdfjs-dist/build/pdf.worker.js';
+    '../../node_modules/pdfjs-dist/build/pdf.worker.mjs';
 
   var pdfDoc = null,
       pageNum = 1,
@@ -128,13 +128,11 @@
    * Asynchronously downloads PDF.
    */
   var loadingTask = pdfjsLib.getDocument(url);
-  loadingTask.promise.then(function(pdfDoc_) {
-    pdfDoc = pdfDoc_;
-    document.getElementById('page_count').textContent = pdfDoc.numPages;
+  pdfDoc = await loadingTask.promise;
+  document.getElementById('page_count').textContent = pdfDoc.numPages;
 
-    // Initial/first page rendering
-    renderPage(pageNum);
-  });
+  // Initial/first page rendering
+  renderPage(pageNum);
 </script>
 
 </body>
diff --git a/examples/mobile-viewer/viewer.css b/examples/mobile-viewer/viewer.css
index 0ce654a22..b58dc9141 100644
--- a/examples/mobile-viewer/viewer.css
+++ b/examples/mobile-viewer/viewer.css
@@ -240,31 +240,3 @@ canvas {
   background-repeat: no-repeat;
   animation: progressIndeterminate 2s linear infinite;
 }
-
-#errorWrapper {
-  background: none repeat scroll 0 0 rgb(255 85 85 / 1);
-  color: rgb(255 255 255 / 1);
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 3.2rem;
-  z-index: 1000;
-  padding: 0.3rem;
-  font-size: 0.8em;
-}
-
-#errorMessageLeft {
-  float: left;
-}
-
-#errorMessageRight {
-  float: right;
-}
-
-#errorMoreInfo {
-  background-color: rgb(255 255 255 / 1);
-  color: rgb(0 0 0 / 1);
-  padding: 0.3rem;
-  margin: 0.3rem;
-  width: 98%;
-}
diff --git a/examples/mobile-viewer/viewer.html b/examples/mobile-viewer/viewer.html
index db8c5034c..50bbfd781 100644
--- a/examples/mobile-viewer/viewer.html
+++ b/examples/mobile-viewer/viewer.html
@@ -24,8 +24,8 @@ limitations under the License.
     <link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css">
     <link rel="stylesheet" type="text/css" href="viewer.css">
 
-    <script src="../../node_modules/pdfjs-dist/build/pdf.js"></script>
-    <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.js"></script>
+    <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
+    <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script>
   </head>
 
   <body>
@@ -42,25 +42,6 @@ limitations under the License.
       <div class="glimmer"></div>
     </div>
 
-    <div id="errorWrapper" hidden="true">
-      <div id="errorMessageLeft">
-        <span id="errorMessage"></span>
-        <button id="errorShowMore">
-          More Information
-        </button>
-        <button id="errorShowLess">
-          Less Information
-        </button>
-      </div>
-      <div id="errorMessageRight">
-        <button id="errorClose">
-          Close
-        </button>
-      </div>
-      <div class="clearBoth"></div>
-      <textarea id="errorMoreInfo" hidden="true" readonly="readonly"></textarea>
-    </div>
-
     <footer>
       <button class="toolbarButton pageUp" title="Previous Page" id="previous"></button>
       <button class="toolbarButton pageDown" title="Next Page" id="next"></button>
@@ -71,6 +52,6 @@ limitations under the License.
       <button class="toolbarButton zoomIn" title="Zoom In" id="zoomIn"></button>
     </footer>
 
-     <script src="viewer.js"></script>
+     <script src="viewer.mjs" type="module"></script>
   </body>
 </html>
diff --git a/examples/mobile-viewer/viewer.js b/examples/mobile-viewer/viewer.mjs
similarity index 73%
rename from examples/mobile-viewer/viewer.js
rename to examples/mobile-viewer/viewer.mjs
index dc4371715..32915ebe9 100644
--- a/examples/mobile-viewer/viewer.js
+++ b/examples/mobile-viewer/viewer.mjs
@@ -13,8 +13,6 @@
  * limitations under the License.
  */
 
-"use strict";
-
 if (!pdfjsLib.getDocument || !pdfjsViewer.PDFViewer) {
   // eslint-disable-next-line no-alert
   alert("Please build the pdfjs-dist library using\n `gulp dist-install`");
@@ -27,7 +25,7 @@ const CMAP_URL = "../../node_modules/pdfjs-dist/cmaps/";
 const CMAP_PACKED = true;
 
 pdfjsLib.GlobalWorkerOptions.workerSrc =
-  "../../node_modules/pdfjs-dist/build/pdf.worker.js";
+  "../../node_modules/pdfjs-dist/build/pdf.worker.mjs";
 
 const DEFAULT_URL = "../../web/compressed.tracemonkey-pldi-09.pdf";
 const DEFAULT_SCALE_DELTA = 1.1;
@@ -89,41 +87,17 @@ const PDFViewerApplication = {
         self.loadingBar.hide();
         self.setTitleUsingMetadata(pdfDocument);
       },
-      function (exception) {
-        const message = exception && exception.message;
-        const l10n = self.l10n;
-        let loadingErrorMessage;
-
-        if (exception instanceof pdfjsLib.InvalidPDFException) {
-          // change error message also for other builds
-          loadingErrorMessage = l10n.get(
-            "pdfjs-invalid-file-error",
-            null,
-            "Invalid or corrupted PDF file."
-          );
-        } else if (exception instanceof pdfjsLib.MissingPDFException) {
-          // special message for missing PDFs
-          loadingErrorMessage = l10n.get(
-            "pdfjs-missing-file-error",
-            null,
-            "Missing PDF file."
-          );
-        } else if (exception instanceof pdfjsLib.UnexpectedResponseException) {
-          loadingErrorMessage = l10n.get(
-            "pdfjs-unexpected-response-error",
-            null,
-            "Unexpected server response."
-          );
-        } else {
-          loadingErrorMessage = l10n.get(
-            "pdfjs-loading-error",
-            null,
-            "An error occurred while loading the PDF."
-          );
+      function (reason) {
+        let key = "pdfjs-loading-error";
+        if (reason instanceof pdfjsLib.InvalidPDFException) {
+          key = "pdfjs-invalid-file-error";
+        } else if (reason instanceof pdfjsLib.MissingPDFException) {
+          key = "pdfjs-missing-file-error";
+        } else if (reason instanceof pdfjsLib.UnexpectedResponseException) {
+          key = "pdfjs-unexpected-response-error";
         }
-
-        loadingErrorMessage.then(function (msg) {
-          self.error(msg, { message });
+        self.l10n.get(key).then(msg => {
+          self.error(msg, { message: reason?.message });
         });
         self.loadingBar.hide();
       }
@@ -136,9 +110,6 @@ const PDFViewerApplication = {
    *                      destruction is completed.
    */
   close() {
-    const errorWrapper = document.getElementById("errorWrapper");
-    errorWrapper.hidden = true;
-
     if (!this.pdfLoadingTask) {
       return Promise.resolve();
     }
@@ -231,83 +202,25 @@ const PDFViewerApplication = {
   },
 
   error: function pdfViewError(message, moreInfo) {
-    const l10n = this.l10n;
     const moreInfoText = [
-      l10n.get(
-        "pdfjs-error-version-info",
-        { version: pdfjsLib.version || "?", build: pdfjsLib.build || "?" },
-        "PDF.js v{ $version } (build: { $build })"
-      ),
+      `PDF.js v${pdfjsLib.version || "?"} (build: ${pdfjsLib.build || "?"})`,
     ];
-
     if (moreInfo) {
-      moreInfoText.push(
-        l10n.get(
-          "pdfjs-error-message",
-          { message: moreInfo.message },
-          "Message: { $message }"
-        )
-      );
+      moreInfoText.push(`Message: ${moreInfo.message}`);
+
       if (moreInfo.stack) {
-        moreInfoText.push(
-          l10n.get(
-            "pdfjs-error-stack",
-            { stack: moreInfo.stack },
-            "Stack: { $stack }"
-          )
-        );
+        moreInfoText.push(`Stack: ${moreInfo.stack}`);
       } else {
         if (moreInfo.filename) {
-          moreInfoText.push(
-            l10n.get(
-              "pdfjs-error-file",
-              { file: moreInfo.filename },
-              "File: { $file }"
-            )
-          );
+          moreInfoText.push(`File: ${moreInfo.filename}`);
         }
         if (moreInfo.lineNumber) {
-          moreInfoText.push(
-            l10n.get(
-              "pdfjs-error-line",
-              { line: moreInfo.lineNumber },
-              "Line: { $line }"
-            )
-          );
+          moreInfoText.push(`Line: ${moreInfo.lineNumber}`);
         }
       }
     }
 
-    const errorWrapper = document.getElementById("errorWrapper");
-    errorWrapper.hidden = false;
-
-    const errorMessage = document.getElementById("errorMessage");
-    errorMessage.textContent = message;
-
-    const closeButton = document.getElementById("errorClose");
-    closeButton.onclick = function () {
-      errorWrapper.hidden = true;
-    };
-
-    const errorMoreInfo = document.getElementById("errorMoreInfo");
-    const moreInfoButton = document.getElementById("errorShowMore");
-    const lessInfoButton = document.getElementById("errorShowLess");
-    moreInfoButton.onclick = function () {
-      errorMoreInfo.hidden = false;
-      moreInfoButton.hidden = true;
-      lessInfoButton.hidden = false;
-      errorMoreInfo.style.height = errorMoreInfo.scrollHeight + "px";
-    };
-    lessInfoButton.onclick = function () {
-      errorMoreInfo.hidden = true;
-      moreInfoButton.hidden = false;
-      lessInfoButton.hidden = true;
-    };
-    moreInfoButton.hidden = false;
-    lessInfoButton.hidden = true;
-    Promise.all(moreInfoText).then(function (parts) {
-      errorMoreInfo.value = parts.join("\n");
-    });
+    console.error(`${message}\n\n${moreInfoText.join("\n")}`);
   },
 
   progress: function pdfViewProgress(level) {
diff --git a/examples/node/getinfo.js b/examples/node/getinfo.mjs
similarity index 94%
rename from examples/node/getinfo.js
rename to examples/node/getinfo.mjs
index 4723b4273..9847ebe52 100644
--- a/examples/node/getinfo.js
+++ b/examples/node/getinfo.mjs
@@ -1,14 +1,12 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
-/* eslint-disable import/no-commonjs */
-
 //
 // Basic node example that prints document metadata and text content.
 //
 
 // Run `gulp dist-install` to generate 'pdfjs-dist' npm package files.
-const pdfjsLib = require("pdfjs-dist/legacy/build/pdf.js");
+import { getDocument } from "pdfjs-dist/legacy/build/pdf.mjs";
 
 // Loading file from file system into typed array
 const pdfPath =
@@ -16,7 +14,7 @@ const pdfPath =
 
 // Will be using promises to load document, pages and misc data instead of
 // callback.
-const loadingTask = pdfjsLib.getDocument(pdfPath);
+const loadingTask = getDocument(pdfPath);
 loadingTask.promise
   .then(function (doc) {
     const numPages = doc.numPages;
diff --git a/examples/node/pdf2png/pdf2png.js b/examples/node/pdf2png/pdf2png.mjs
similarity index 56%
rename from examples/node/pdf2png/pdf2png.js
rename to examples/node/pdf2png/pdf2png.mjs
index f62e4358b..3dfd9b089 100644
--- a/examples/node/pdf2png/pdf2png.js
+++ b/examples/node/pdf2png/pdf2png.mjs
@@ -12,15 +12,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-/* eslint-disable import/no-commonjs */
 
-const Canvas = require("canvas");
-const assert = require("assert").strict;
-const fs = require("fs");
+import { strict as assert } from "assert";
+import Canvas from "canvas";
+import fs from "fs";
+import { getDocument } from "pdfjs-dist/legacy/build/pdf.mjs";
 
-function NodeCanvasFactory() {}
-NodeCanvasFactory.prototype = {
-  create: function NodeCanvasFactory_create(width, height) {
+class NodeCanvasFactory {
+  create(width, height) {
     assert(width > 0 && height > 0, "Invalid canvas size");
     const canvas = Canvas.createCanvas(width, height);
     const context = canvas.getContext("2d");
@@ -28,16 +27,16 @@ NodeCanvasFactory.prototype = {
       canvas,
       context,
     };
-  },
+  }
 
-  reset: function NodeCanvasFactory_reset(canvasAndContext, width, height) {
+  reset(canvasAndContext, width, height) {
     assert(canvasAndContext.canvas, "Canvas is not specified");
     assert(width > 0 && height > 0, "Invalid canvas size");
     canvasAndContext.canvas.width = width;
     canvasAndContext.canvas.height = height;
-  },
+  }
 
-  destroy: function NodeCanvasFactory_destroy(canvasAndContext) {
+  destroy(canvasAndContext) {
     assert(canvasAndContext.canvas, "Canvas is not specified");
 
     // Zeroing the width and height cause Firefox to release graphics
@@ -46,10 +45,8 @@ NodeCanvasFactory.prototype = {
     canvasAndContext.canvas.height = 0;
     canvasAndContext.canvas = null;
     canvasAndContext.context = null;
-  },
-};
-
-const pdfjsLib = require("pdfjs-dist/legacy/build/pdf.js");
+  }
+}
 
 // Some PDFs need external cmaps.
 const CMAP_URL = "../../../node_modules/pdfjs-dist/cmaps/";
@@ -67,7 +64,7 @@ const pdfPath =
 const data = new Uint8Array(fs.readFileSync(pdfPath));
 
 // Load the PDF file.
-const loadingTask = pdfjsLib.getDocument({
+const loadingTask = getDocument({
   data,
   cMapUrl: CMAP_URL,
   cMapPacked: CMAP_PACKED,
@@ -75,39 +72,35 @@ const loadingTask = pdfjsLib.getDocument({
   canvasFactory,
 });
 
-(async function () {
-  try {
-    const pdfDocument = await loadingTask.promise;
-    console.log("# PDF document loaded.");
-    // Get the first page.
-    const page = await pdfDocument.getPage(1);
-    // Render the page on a Node canvas with 100% scale.
-    const viewport = page.getViewport({ scale: 1.0 });
-    const canvasAndContext = canvasFactory.create(
-      viewport.width,
-      viewport.height
-    );
-    const renderContext = {
-      canvasContext: canvasAndContext.context,
-      viewport,
-    };
+try {
+  const pdfDocument = await loadingTask.promise;
+  console.log("# PDF document loaded.");
+  // Get the first page.
+  const page = await pdfDocument.getPage(1);
+  // Render the page on a Node canvas with 100% scale.
+  const viewport = page.getViewport({ scale: 1.0 });
+  const canvasAndContext = canvasFactory.create(
+    viewport.width,
+    viewport.height
+  );
+  const renderContext = {
+    canvasContext: canvasAndContext.context,
+    viewport,
+  };
 
-    const renderTask = page.render(renderContext);
-    await renderTask.promise;
-    // Convert the canvas to an image buffer.
-    const image = canvasAndContext.canvas.toBuffer();
-    fs.writeFile("output.png", image, function (error) {
-      if (error) {
-        console.error("Error: " + error);
-      } else {
-        console.log(
-          "Finished converting first page of PDF file to a PNG image."
-        );
-      }
-    });
-    // Release page resources.
-    page.cleanup();
-  } catch (reason) {
-    console.log(reason);
-  }
-})();
+  const renderTask = page.render(renderContext);
+  await renderTask.promise;
+  // Convert the canvas to an image buffer.
+  const image = canvasAndContext.canvas.toBuffer();
+  fs.writeFile("output.png", image, function (error) {
+    if (error) {
+      console.error("Error: " + error);
+    } else {
+      console.log("Finished converting first page of PDF file to a PNG image.");
+    }
+  });
+  // Release page resources.
+  page.cleanup();
+} catch (reason) {
+  console.log(reason);
+}
diff --git a/examples/text-only/index.html b/examples/text-only/index.html
index 2717dcb07..2acbd553e 100644
--- a/examples/text-only/index.html
+++ b/examples/text-only/index.html
@@ -3,8 +3,8 @@
 <head>
     <meta charset="UTF-8">
     <title>Text-only PDF.js example</title>
-    <script src="../../node_modules/pdfjs-dist/build/pdf.js"></script>
-    <script src="pdf2svg.js"></script>
+    <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
+    <script src="pdf2svg.mjs" type="module"></script>
 </head>
 <body>
   <p>Text-only PDF.js example</p>
diff --git a/examples/text-only/pdf2svg.js b/examples/text-only/pdf2svg.mjs
similarity index 97%
rename from examples/text-only/pdf2svg.js
rename to examples/text-only/pdf2svg.mjs
index e7242f4af..f5184924d 100644
--- a/examples/text-only/pdf2svg.js
+++ b/examples/text-only/pdf2svg.mjs
@@ -19,7 +19,7 @@ const PAGE_SCALE = 1.5;
 const SVG_NS = "http://www.w3.org/2000/svg";
 
 pdfjsLib.GlobalWorkerOptions.workerSrc =
-  "../../node_modules/pdfjs-dist/build/pdf.worker.js";
+  "../../node_modules/pdfjs-dist/build/pdf.worker.mjs";
 
 function buildSVG(viewport, textContent) {
   // Building SVG with size of the viewport (for simplicity)
diff --git a/examples/webpack/README.md b/examples/webpack/README.md
index 04a078f30..1df9d47d1 100644
--- a/examples/webpack/README.md
+++ b/examples/webpack/README.md
@@ -31,5 +31,3 @@ importing `pdfjs-dist/webpack` which is the zero-configuration method for
 Webpack users. Installing `worker-loader` is no longer necessary.
 
     import * as pdfjsLib from 'pdfjs-dist/webpack';
-
-For a full working example refer to [this repository](https://github.com/yurydelendik/pdfjs-react).
diff --git a/examples/webpack/main.js b/examples/webpack/main.js
deleted file mode 100644
index e23274452..000000000
--- a/examples/webpack/main.js
+++ /dev/null
@@ -1,37 +0,0 @@
-// Any copyright is dedicated to the Public Domain.
-// http://creativecommons.org/licenses/publicdomain/
-
-/* eslint-disable import/no-commonjs */
-
-// Hello world example for webpack.
-
-const pdfjsLib = require("pdfjs-dist");
-
-const pdfPath = "../learning/helloworld.pdf";
-
-// Setting worker path to worker bundle.
-pdfjsLib.GlobalWorkerOptions.workerSrc =
-  "../../build/webpack/pdf.worker.bundle.js";
-
-// Loading a document.
-const loadingTask = pdfjsLib.getDocument(pdfPath);
-loadingTask.promise
-  .then(function (pdfDocument) {
-    // Request a first page
-    return pdfDocument.getPage(1).then(function (pdfPage) {
-      // Display page on the existing canvas with 100% scale.
-      const viewport = pdfPage.getViewport({ scale: 1.0 });
-      const canvas = document.getElementById("theCanvas");
-      canvas.width = viewport.width;
-      canvas.height = viewport.height;
-      const ctx = canvas.getContext("2d");
-      const renderTask = pdfPage.render({
-        canvasContext: ctx,
-        viewport,
-      });
-      return renderTask.promise;
-    });
-  })
-  .catch(function (reason) {
-    console.error("Error: " + reason);
-  });
diff --git a/examples/webpack/main.mjs b/examples/webpack/main.mjs
new file mode 100644
index 000000000..9f9d7138b
--- /dev/null
+++ b/examples/webpack/main.mjs
@@ -0,0 +1,29 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+// Hello world example for webpack.
+
+import * as pdfjsLib from "pdfjs-dist";
+
+const pdfPath = "../learning/helloworld.pdf";
+
+// Setting worker path to worker bundle.
+pdfjsLib.GlobalWorkerOptions.workerSrc =
+  "../../build/webpack/pdf.worker.bundle.js";
+
+// Loading a document.
+const loadingTask = pdfjsLib.getDocument(pdfPath);
+const pdfDocument = await loadingTask.promise;
+// Request a first page
+const pdfPage = await pdfDocument.getPage(1);
+// Display page on the existing canvas with 100% scale.
+const viewport = pdfPage.getViewport({ scale: 1.0 });
+const canvas = document.getElementById("theCanvas");
+canvas.width = viewport.width;
+canvas.height = viewport.height;
+const ctx = canvas.getContext("2d");
+const renderTask = pdfPage.render({
+  canvasContext: ctx,
+  viewport,
+});
+await renderTask.promise;
diff --git a/examples/webpack/package.json b/examples/webpack/package.json
index 5ce9a9b43..4fcdb897e 100644
--- a/examples/webpack/package.json
+++ b/examples/webpack/package.json
@@ -1,12 +1,12 @@
 {
   "name": "webpack-pdf.js-example",
-  "version": "0.1.0",
+  "version": "0.2.0",
   "scripts": {
     "build": "webpack"
   },
   "devDependencies": {
-    "webpack": "^5.11.1",
-    "webpack-cli": "^4.3.1",
+    "webpack": "^5.89.0",
+    "webpack-cli": "^5.1.4",
     "pdfjs-dist": "../../node_modules/pdfjs-dist"
   }
 }
diff --git a/examples/webpack/webpack.config.js b/examples/webpack/webpack.config.js
index 6d421a512..47301843c 100644
--- a/examples/webpack/webpack.config.js
+++ b/examples/webpack/webpack.config.js
@@ -6,8 +6,8 @@ const path = require("path");
 module.exports = {
   context: __dirname,
   entry: {
-    main: "./main.js",
-    "pdf.worker": "pdfjs-dist/build/pdf.worker.entry",
+    main: "./main.mjs",
+    "pdf.worker": "pdfjs-dist/build/pdf.worker.mjs",
   },
   mode: "none",
   output: {
diff --git a/gulpfile.mjs b/gulpfile.mjs
index 8a026ef8d..4da80ee9b 100644
--- a/gulpfile.mjs
+++ b/gulpfile.mjs
@@ -61,7 +61,6 @@ const MINIFIED_DIR = BUILD_DIR + "minified/";
 const MINIFIED_LEGACY_DIR = BUILD_DIR + "minified-legacy/";
 const JSDOC_BUILD_DIR = BUILD_DIR + "jsdoc/";
 const GH_PAGES_DIR = BUILD_DIR + "gh-pages/";
-const SRC_DIR = "src/";
 const DIST_DIR = BUILD_DIR + "dist/";
 const TYPES_DIR = BUILD_DIR + "types/";
 const TMP_DIR = BUILD_DIR + "tmp/";
@@ -1829,7 +1828,6 @@ gulp.task(
           .src([
             GENERIC_DIR + "build/pdf.mjs",
             GENERIC_DIR + "build/pdf.worker.mjs",
-            SRC_DIR + "pdf.worker.entry.js",
           ])
           .pipe(gulp.dest(TYPESTEST_DIR + "build/")),
         gulp
@@ -2207,14 +2205,12 @@ gulp.task(
           .src([
             GENERIC_DIR + "build/{pdf,pdf.worker,pdf.sandbox}.mjs",
             GENERIC_DIR + "build/{pdf,pdf.worker,pdf.sandbox}.mjs.map",
-            SRC_DIR + "pdf.worker.entry.js",
           ])
           .pipe(gulp.dest(DIST_DIR + "build/")),
         gulp
           .src([
             GENERIC_LEGACY_DIR + "build/{pdf,pdf.worker,pdf.sandbox}.mjs",
             GENERIC_LEGACY_DIR + "build/{pdf,pdf.worker,pdf.sandbox}.mjs.map",
-            SRC_DIR + "pdf.worker.entry.js",
           ])
           .pipe(gulp.dest(DIST_DIR + "legacy/build/")),
         gulp
diff --git a/src/pdf.worker.entry.js b/src/pdf.worker.entry.js
deleted file mode 100644
index c717a1418..000000000
--- a/src/pdf.worker.entry.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2022 Mozilla Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/* globals require:readonly */
-/* eslint-disable import/no-commonjs */
-
-(typeof window !== "undefined"
-  ? window
-  : {}
-).pdfjsWorker = require("./pdf.worker.mjs");