diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index b77f09a1843ef3f411bf91f31acd67811c2d00e2..8254cfb716051e1948c2892adcd68f9e1cc96856 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -680,6 +680,7 @@ BOOL js_generate_index(JSContext* js_cx, JSObject* parent,
 			strcat(spath,".js");
 
 		if(!fexist(spath)) {
+			JS_RESUMEREQUEST(js_cx, rc);
 			lprintf(LOG_ERR,"%04d !HTML JavaScript (%s) doesn't exist",sock,spath);
 			break;
 		}
diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp
index d2ca7d2bbeddac65d3aaf57e8ed023afeb6fbfc0..73a77223b9118998c89934d91516c184577e77f5 100644
--- a/src/sbbs3/js_bbs.cpp
+++ b/src/sbbs3/js_bbs.cpp
@@ -1755,6 +1755,7 @@ js_recvfile(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 	char*		p;
 	char*		cstr;
 	jsrefcount	rc;
+	/* Deuce: please explain the next 2 lines: */
 	rc=JS_SUSPENDREQUEST(cx);
 	JS_RESUMEREQUEST(cx, rc);
 
diff --git a/src/sbbs3/js_file.c b/src/sbbs3/js_file.c
index c076602fad787127336b65194698294448602e22..6612bba5530e73753c8b39a437e28b41bdbe06ef 100644
--- a/src/sbbs3/js_file.c
+++ b/src/sbbs3/js_file.c
@@ -403,9 +403,9 @@ js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 		JS_RESUMEREQUEST(cx, rc);
 		if((js_str=JS_NewStringCopyZ(cx,buf))!=NULL)	/* exception here Feb-12-2005 */
 			*rval = STRING_TO_JSVAL(js_str);			/* _CrtDbgBreak from _heap_alloc_dbg */
-		rc=JS_SUSPENDREQUEST(cx);
+	} else {
+		JS_RESUMEREQUEST(cx, rc);
 	}
-	JS_RESUMEREQUEST(cx, rc);
 
 	return(JS_TRUE);
 }
@@ -1174,6 +1174,7 @@ js_write(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 		if(tlen>len) {
 			len=tlen-len;
 			if((cp=malloc(len))==NULL) {
+				JS_RESUMEREQUEST(cx, rc);
 				FREE_AND_NULL(uubuf);
 				dbprintf(TRUE, p, "malloc failure of %u bytes", len);
 				return(JS_TRUE);
diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c
index 55d4c6fd0af71b0a1e9e88f059b2e8d6df3d3bda..70306b49425d95f60f990fc74c04aa2f34ddf33a 100644
--- a/src/sbbs3/js_global.c
+++ b/src/sbbs3/js_global.c
@@ -499,6 +499,7 @@ js_crc32(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 	size_t		len;
 	uint32_t	cs;
 	jsrefcount	rc;
+	/* Deuce: please explain the next 2 lines: */
 	rc=JS_SUSPENDREQUEST(cx);
 	JS_RESUMEREQUEST(cx, rc);
 
@@ -529,7 +530,7 @@ js_chksum(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 	if((p=js_ValueToStringBytes(cx, argv[0], &len))==NULL)
 		return(JS_FALSE);
 
-	rc=JS_SUSPENDREQUEST(cx);
+	rc=JS_SUSPENDREQUEST(cx);	/* Deuce: Is this really necessary? */
 	while(len--) sum+=*(p++);
 	JS_RESUMEREQUEST(cx, rc);
 
@@ -2567,6 +2568,7 @@ js_cfgfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 	char		result[MAX_PATH+1];
 	char*		cstr;
 	jsrefcount	rc;
+	/* Deuce: please explain next 2 lines: */
 	rc=JS_SUSPENDREQUEST(cx);
 	JS_RESUMEREQUEST(cx, rc);
 
diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c
index f6cbf167e09468336e7b7198174c4030c010a1de..6e596446bc6db86e265658b087195da08a53b18e 100644
--- a/src/sbbs3/js_socket.c
+++ b/src/sbbs3/js_socket.c
@@ -710,6 +710,8 @@ js_recvfrom(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 				break;
 		}
 
+		JS_RESUMEREQUEST(cx, rc);
+
 		if(rd!=len) {
 			p->last_error=ERROR_VALUE;
 			return(JS_TRUE);
@@ -724,12 +726,11 @@ js_recvfrom(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 
 		rc=JS_SUSPENDREQUEST(cx);
 		len = recvfrom(p->sock,buf,len,0,(SOCKADDR*)&addr,&addrlen);
+		JS_RESUMEREQUEST(cx, rc);
 		if(len<0) {
 			p->last_error=ERROR_VALUE;
-			JS_RESUMEREQUEST(cx, rc);
 			return(JS_TRUE);
 		}
-		JS_RESUMEREQUEST(cx, rc);
 		buf[len]=0;
 
 		str = JS_NewStringCopyN(cx, buf, len);
diff --git a/src/sbbs3/js_system.c b/src/sbbs3/js_system.c
index 6409389538da9f49a161c7b61e4ad2636b1c044c..3c9715d75dd56997a5bd46636445b386654000b9 100644
--- a/src/sbbs3/js_system.c
+++ b/src/sbbs3/js_system.c
@@ -818,11 +818,10 @@ js_matchuserdata(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
 
 	JS_ValueToInt32(cx,argv[0],&offset);
 	rc=JS_SUSPENDREQUEST(cx);
-	if((len=user_rec_len(offset))<0) {
-		JS_RESUMEREQUEST(cx, rc);
-		return(JS_FALSE);
-	}
+	len=user_rec_len(offset);
 	JS_RESUMEREQUEST(cx, rc);
+	if(len<0)
+		return(JS_FALSE);
 
 	if((js_str=JS_ValueToString(cx, argv[1]))==NULL) {
 		*rval = INT_TO_JSVAL(0);
@@ -1183,11 +1182,10 @@ js_get_node_message(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval
 		node_num=1;
 
 	rc=JS_SUSPENDREQUEST(cx);
-	if((buf=getnmsg(cfg,node_num))==NULL) {
-		JS_RESUMEREQUEST(cx, rc);
-		return(JS_TRUE);
-	}
+	buf=getnmsg(cfg,node_num);
 	JS_RESUMEREQUEST(cx, rc);
+	if(buf==NULL)
+		return(JS_TRUE);
 
 	js_str=JS_NewStringCopyZ(cx, buf);
 	free(buf);
@@ -1247,11 +1245,10 @@ js_get_telegram(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv
 		usernumber=1;
 
 	rc=JS_SUSPENDREQUEST(cx);
-	if((buf=getsmsg(cfg,usernumber))==NULL) {
-		JS_RESUMEREQUEST(cx, rc);
-		return(JS_TRUE);
-	}
+	buf=getsmsg(cfg,usernumber);
 	JS_RESUMEREQUEST(cx, rc);
+	if(buf==NULL)
+		return(JS_TRUE);
 
 	js_str=JS_NewStringCopyZ(cx, buf);
 	free(buf);
diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c
index f449336478bb8e08848325d02f1f6bf1d546f78d..ee3aee82e4e1d190f6e706a9f15981046f2c14e7 100644
--- a/src/sbbs3/jsexec.c
+++ b/src/sbbs3/jsexec.c
@@ -8,7 +8,7 @@
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
  *																			*
- * Copyright 2007 Rob Swindell - http://www.synchro.net/copyright.html		*
+ * Copyright 2008 Rob Swindell - http://www.synchro.net/copyright.html		*
  *																			*
  * This program is free software; you can redistribute it and/or			*
  * modify it under the terms of the GNU General Public License				*
@@ -473,8 +473,10 @@ js_prompt(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 		instr[0]=0;
 
 	rc=JS_SUSPENDREQUEST(cx);
-	if(!fgets(instr,sizeof(instr),stdin))
+	if(!fgets(instr,sizeof(instr),stdin)) {
+		JS_RESUMEREQUEST(cx, rc);
 		return(JS_TRUE);
+	}
 	JS_RESUMEREQUEST(cx, rc);
 
 	if((str=JS_NewStringCopyZ(cx, truncnl(instr)))==NULL)