diff --git a/backend/server/lib/utils.js b/backend/server/lib/utils.js
index 4f00e35..7b02926 100644
--- a/backend/server/lib/utils.js
+++ b/backend/server/lib/utils.js
@@ -76,18 +76,20 @@ async function rmrf(path) {
         else {LOG.error(`Can't access path for rmrf ${path}, error is ${err}.`); return false;} // can't operate on this path.
     }
 
-	if ((await fspromises.stat(path)).isFile()) { try{await fspromises.unlink(path); return true;} catch (err) {
-        LOG.error(`Error deleting path ${path}, error is ${err}.`); return false; } }
+	if ((await fspromises.stat(path)).isFile()) try{await fspromises.unlink(path); return true;} catch (err) {
+        if (err.code !== "ENOENT") {LOG.error(`Error deleting path ${path}, error is ${err}.`); return false; } }    // multiprocessing can cause ENOENT if another processes deleted it midway
 
 	const entries = await fspromises.readdir(path);
 	for (const entry of entries) {
 		const pathThis = `${path}/${entry}`, stats = await fspromises.stat(pathThis);
-		if (stats.isFile()) { try {await fspromises.unlink(pathThis);} catch (err) {
-            LOG.error(`Error deleting path ${pathThis}, error is ${err}.`); return false;} }
-		else if (stats.isDirectory()) if (!await rmrf(pathThis)) LOG.error(`Error deleting path ${path}.`); return false;
+		if (stats.isFile()) try {await fspromises.unlink(pathThis);} catch (err) {
+            if (err.code !== "ENOENT") {LOG.error(`Error deleting path ${pathThis}, error is ${err}.`); return false;} }
+		else if (stats.isDirectory()) {
+            const result = await rmrf(pathThis); if (!result) {LOG.error(`Error deleting path ${path}.`); return false;}
+        }
 	}
 	try {await fspromises.rmdir(path); return true;} catch (err) { 
-        LOG.error(`Error deleting path ${pathThis}, error is ${err}.`); return false; }
+        if (err.code !== "ENOENT") {LOG.error(`Error deleting path ${pathThis}, error is ${err}.`); return false; }}
 }
 
 /**