diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c
index a6a971cc3eb318fa0402632eaad001e4c9e16e76..f08db680c2196e9bb6a0aa2f9c6c9bf156561524 100644
--- a/src/sbbs3/js_global.c
+++ b/src/sbbs3/js_global.c
@@ -350,14 +350,17 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 
 		path[0]=0;	/* Empty path, indicates load file not found (yet) */
 
+		JS_RESUMEREQUEST(cx, rc);
 		if(JS_GetProperty(cx, obj, "js", &val) && val!=JSVAL_VOID && JSVAL_IS_OBJECT(val)) {
 			JSObject* js_obj = JSVAL_TO_OBJECT(val);
 			
 			/* if js.exec_dir is defined (location of executed script), search their first */
 			if(JS_GetProperty(cx, js_obj, "exec_dir", &val) && val!=JSVAL_VOID && JSVAL_IS_STRING(val)) {
 				SAFEPRINTF2(path,"%s%s",js_ValueToStringBytes(cx, val, NULL),filename);
+				rc=JS_SUSPENDREQUEST(cx);
 				if(!fexistcase(path))
 					path[0]=0;
+				JS_RESUMEREQUEST(cx, rc);
 			}
 			if(JS_GetProperty(cx, js_obj, JAVASCRIPT_LOAD_PATH_LIST, &val) && val!=JSVAL_VOID && JSVAL_IS_OBJECT(val))
 				js_load_list = JSVAL_TO_OBJECT(val);
@@ -374,6 +377,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 					if(prefix[0]==0)
 						continue;
 					backslash(prefix);
+					rc=JS_SUSPENDREQUEST(cx);
 					if(isfullpath(prefix)) {
 						SAFEPRINTF2(path,"%s%s",prefix,filename);
 						if(!fexistcase(path))
@@ -384,9 +388,11 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 						if(!fexistcase(path))
 							path[0]=0;
 					}
+					JS_RESUMEREQUEST(cx, rc);
 				}
 			}
 		}
+		rc=JS_SUSPENDREQUEST(cx);
 		/* if mods_dir is defined, search there next */
 		if(path[0]==0 && p->cfg->mods_dir[0]!=0) {
 			SAFEPRINTF2(path,"%s%s",p->cfg->mods_dir,filename);
@@ -399,9 +405,13 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 			char		prefix[MAX_PATH+1];
 
 			for(i=0;path[0]==0;i++) {
-				if(!JS_GetElement(cx, js_load_list, i, &val) || val==JSVAL_VOID)
+				JS_RESUMEREQUEST(cx, rc);
+				if(!JS_GetElement(cx, js_load_list, i, &val) || val==JSVAL_VOID) {
+					rc=JS_SUSPENDREQUEST(cx);
 					break;
+				}
 				SAFECOPY(prefix,js_ValueToStringBytes(cx, val, NULL));
+				rc=JS_SUSPENDREQUEST(cx);
 				if(prefix[0]==0)
 					continue;
 				backslash(prefix);