Add extra check before defineProperty

Also had to make sure the property is enumerable (it's not by default).
Deletion still works even though it shouldn't, though.