diff --git a/resources/assets/javascripts/chunk-loader.js b/resources/assets/javascripts/chunk-loader.js
index dcd95cc63df3934e4ebdf17736ba3fa31e249269..f3722866a867859fef38a7bdf646ee4fed1dc218 100644
--- a/resources/assets/javascripts/chunk-loader.js
+++ b/resources/assets/javascripts/chunk-loader.js
@@ -8,95 +8,100 @@ export const loadScript = function (script_name) {
     });
 };
 
-export const loadChunk = (function () {
-    let mathjax_promise = null;
+let mathjax_promise = null;
 
-    return function (chunk) {
-        let promise = null;
-        switch (chunk) {
+/** This function dynamically loads JS features organized in chunks.
+ *
+ * @param {string} chunk  The name of the chunk to load.
+ * @param {{ silent: boolean }} options Options for loading the chunk.
+ *                                      Pass `{ silent: true }` to supress
+ *                                      error messages.
+ * @return {Promise}
+ */
+export const loadChunk = function (chunk, { silent = false } = {}) {
+    let promise = null;
+    switch (chunk) {
+        case 'code-highlight':
+            promise = import(
+                /* webpackChunkName: "code-highlight" */
+                './chunks/code-highlight'
+            ).then(({ default: hljs }) => {
+                return hljs;
+            });
+            break;
 
-            case 'code-highlight':
-                promise = import(
-                    /* webpackChunkName: "code-highlight" */
-                    './chunks/code-highlight'
-                ).then(({default: hljs}) => {
-                    return hljs;
-                });
-                break;
+        case 'courseware':
+            promise = Promise.all([
+                STUDIP.loadChunk('vue'),
+                import(
+                    /* webpackChunkName: "courseware" */
+                    './chunks/courseware'
+                ),
+            ]).then(([Vue]) => Vue);
+            break;
 
-            case 'courseware':
-                promise = Promise.all([
-                    STUDIP.loadChunk('vue'),
-                    import(
-                        /* webpackChunkName: "courseware" */
-                        './chunks/courseware'
-                    ),
-                ]).then(([Vue]) => Vue);
-                break;
+        case 'chartist':
+            promise = import(
+                /* webpackChunkName: "chartist" */
+                './chunks/chartist'
+            ).then(({ default: Chartist }) => Chartist);
+            break;
 
-            case 'chartist':
-                promise = import(
-                    /* webpackChunkName: "chartist" */
-                    './chunks/chartist'
-                ).then(({ default: Chartist }) => Chartist);
-                break;
+        case 'fullcalendar':
+            promise = import(
+                /* webpackChunkName: "fullcalendar" */
+                './chunks/fullcalendar'
+            );
+            break;
 
-            case 'fullcalendar':
-                promise = import(
-                    /* webpackChunkName: "fullcalendar" */
-                    './chunks/fullcalendar'
-                );
-                break;
+        case 'tablesorter':
+            promise = import(
+                /* webpackChunkName: "tablesorter" */
+                './chunks/tablesorter'
+            );
+            break;
 
-            case 'tablesorter':
-                promise = import(
-                    /* webpackChunkName: "tablesorter" */
-                    './chunks/tablesorter'
-                );
-                break;
-
-            case 'mathjax':
-                if (mathjax_promise === null) {
-                    mathjax_promise = STUDIP.loadScript(
-                        'javascripts/mathjax/MathJax.js?config=TeX-AMS_HTML,default'
-                    ).then(() => {
+        case 'mathjax':
+            if (mathjax_promise === null) {
+                mathjax_promise = STUDIP.loadScript('javascripts/mathjax/MathJax.js?config=TeX-AMS_HTML,default')
+                    .then(() => {
                         (function (origPrint) {
                             window.print = function () {
-                                window.MathJax.Hub.Queue(
-                                    ['Delay', window.MathJax.Callback, 700],
-                                    origPrint
-                                );
+                                window.MathJax.Hub.Queue(['Delay', window.MathJax.Callback, 700], origPrint);
                             };
                         })(window.print);
 
                         return window.MathJax;
-                    }).catch(() => {
-                        console.log('Could not load mathjax')
+                    })
+                    .catch(() => {
+                        throw new Error('Could not load mathjax');
                     });
-                }
-                promise = mathjax_promise;
-                break;
+            }
+            promise = mathjax_promise;
+            break;
 
-            case 'vue':
-                promise = import(
-                    /* webpackChunkName: "vue.js" */
-                    './chunks/vue'
-                );
-                break;
+        case 'vue':
+            promise = import(
+                /* webpackChunkName: "vue.js" */
+                './chunks/vue'
+            );
+            break;
 
-            case 'wysiwyg':
-                promise = import(
-                    /* webpackChunkName: "wysiwyg.js" */
-                    './chunks/wysiwyg'
-                );
-                break;
+        case 'wysiwyg':
+            promise = import(
+                /* webpackChunkName: "wysiwyg.js" */
+                './chunks/wysiwyg'
+            );
+            break;
 
-            default:
-                promise = Promise.reject(new Error(`Unknown chunk: ${chunk}`));
-        }
+        default:
+            promise = Promise.reject(new Error(`Unknown chunk: ${chunk}`));
+    }
 
-        return promise.catch((error) => {
+    return promise.catch((error) => {
+        if (!silent) {
             console.error(`Could not load chunk ${chunk}`, error);
-        });
-    };
-}());
+        }
+        throw error;
+    });
+};