Skip to content

Commit ab58f30

Browse files
authored
Merge pull request #24 from derbyjs/fix-deferred-destroy
Fix deferred destroy
2 parents b8a9bfc + 7f46eeb commit ab58f30

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

lib/templates.js

+9-4
Original file line numberDiff line numberDiff line change
@@ -633,11 +633,16 @@ AsProperty.prototype.emit = function(context, target) {
633633
this.addListeners(target, node, this.lastSegment);
634634
};
635635
AsProperty.prototype.addListeners = function(target, object, key) {
636-
var deleteProperty = function () {
637-
delete object[key];
638-
}
639636
this.addDestroyListener(target, function asPropertyDestroy() {
640-
process.nextTick(deleteProperty);
637+
// memoize initial reference so we dont destroy
638+
// property that has been replaced with a different reference
639+
var intialRef = object[key];
640+
process.nextTick(function deleteProperty() {
641+
if (intialRef !== object[key]) {
642+
return;
643+
}
644+
delete object[key];
645+
});
641646
});
642647
};
643648
AsProperty.prototype.addDestroyListener = elementAddDestroyListener;

0 commit comments

Comments
 (0)