diff --git a/harness/propertyHelper.js b/harness/propertyHelper.js
index d415f2fa961713de0f322b89f4c54c9155449b82..c5b5e0f7c160ec3ef90594a0efff2614806421fc 100644
--- a/harness/propertyHelper.js
+++ b/harness/propertyHelper.js
@@ -31,7 +31,7 @@ function isWritable(obj, name, verifyProp, value) {
     var newValue = value || "unlikelyValue";
     var hadValue = Object.prototype.hasOwnProperty.call(obj, name);
     var oldValue = obj[name];
-    var result;
+    var writeSucceeded;
 
     try {
         obj[name] = newValue;
@@ -41,16 +41,21 @@ function isWritable(obj, name, verifyProp, value) {
         }
     }
 
-    result = (verifyProp && isEqualTo(obj, verifyProp, newValue)) ||
+    writeSucceeded = (verifyProp && isEqualTo(obj, verifyProp, newValue)) ||
         isEqualTo(obj, name, newValue);
 
-    if (hadValue) {
-      obj[name] = oldValue;
-    } else {
-      delete obj[name];
+    // Revert the change only if it was successful (in other cases, reverting
+    // is unnecessary and may trigger exceptions for certain property
+    // configurations)
+    if (writeSucceeded) {
+      if (hadValue) {
+        obj[name] = oldValue;
+      } else {
+        delete obj[name];
+      }
     }
 
-    return result;
+    return writeSucceeded;
 }
 
 function verifyEqualTo(obj, name, value) {