diff --git a/src/xhrInterceptor/XHRProxy.js b/src/xhrInterceptor/XHRProxy.js
index 288142a..2d6d03f 100644
--- a/src/xhrInterceptor/XHRProxy.js
+++ b/src/xhrInterceptor/XHRProxy.js
@@ -166,7 +166,6 @@
       'onprogress',
       'onreadystatechange',
       'readyState',
-      'responseText',
       'responseType',
       'responseXML',
       'status',
@@ -202,6 +201,13 @@
         return this.xhr.response;
       },
     });
+    Object.defineProperty(window.XMLHttpRequest.prototype, 'responseText', {
+      get: function() {
+        if (!this.$responseIntercepted) return undefined;
+        if (this.$responseModified) return this.$newResponseText;
+        return this.xhr.responseText;
+      },
+    });
 
     return this;
   }
diff --git a/src/xhrInterceptor/responseModifiers/index.js b/src/xhrInterceptor/responseModifiers/index.js
index 40494eb..0b349bd 100644
--- a/src/xhrInterceptor/responseModifiers/index.js
+++ b/src/xhrInterceptor/responseModifiers/index.js
@@ -1,9 +1,9 @@
 import MWOptionsWatcherClient from '../../common/mainWorldOptionsWatcher/Client.js';
-import {convertJSONToResponse, getResponseJSON} from '../utils.js';
+import {convertJSONToResponse, convertJSONToResponseText, getResponseJSON} from '../utils.js';
 
-import loadMoreThread from './loadMoreThread.js';
-import flattenThread from './flattenThread.js';
 import createMessageRemoveParentRef from './createMessageRemoveParentRef.js';
+import flattenThread from './flattenThread.js';
+import loadMoreThread from './loadMoreThread.js';
 
 export const responseModifiers = [
   loadMoreThread,
@@ -72,8 +72,8 @@
     for (const modifier of matchingModifiers) {
       json = await modifier.interceptor(request, json);
     }
-    const response = convertJSONToResponse(request, json);
-    request.$newResponse = response;
+    request.$newResponse = convertJSONToResponse(request, json);
+    request.$newResponseText = convertJSONToResponseText(request, json);
     request.$responseModified = true;
   }
 }
diff --git a/src/xhrInterceptor/utils.js b/src/xhrInterceptor/utils.js
index 849c543..d48dfd5 100644
--- a/src/xhrInterceptor/utils.js
+++ b/src/xhrInterceptor/utils.js
@@ -78,7 +78,7 @@
       return JSON.stringify(json);
 
     case 'arraybuffer':
-      const encoder = new TextEncoder();
+      var encoder = new TextEncoder();
       return encoder.encode(JSON.stringify(json)).buffer;
 
     default:
@@ -89,6 +89,13 @@
   }
 }
 
+export function convertJSONToResponseText(xhr, json) {
+  return convertJSONToResponse({
+    $isArrayProto: xhr.$isArrayProto,
+    responseType: 'text',
+  }, json);
+}
+
 export function triggerEvent(eventName, body, id) {
   var evt = new CustomEvent('TWPT_' + eventName, {
     detail: {
