diff --git a/backbone.js b/backbone.js index c364267a1..4fdad1968 100644 --- a/backbone.js +++ b/backbone.js @@ -1085,7 +1085,7 @@ var success = options.success; options.success = function(m, resp, callbackOpts) { if (wait) { - m.off('error', this._forwardPristineError, this); + m.off('error', collection._forwardPristineError, collection); collection.add(m, callbackOpts); } if (success) success.call(callbackOpts.context, m, resp, callbackOpts); diff --git a/test/collection.js b/test/collection.js index adf16dfe9..4ceeaa6ac 100644 --- a/test/collection.js +++ b/test/collection.js @@ -674,6 +674,16 @@ this.ajaxSettings.success(); }); + QUnit.test('successful create with wait:true drops special error listener (#4284)', function(assert) { + assert.expect(1); + var collection = new Backbone.Collection; + collection.url = '/test'; + collection.on('error', function() { assert.ok(true); }); + var model = collection.create({id: '1'}, {wait: true}); + this.ajaxSettings.success(); + model.trigger('error'); + }); + QUnit.test('failing create pre-existing with wait:true triggers once (#4262)', function(assert) { assert.expect(1); var model = new Backbone.Model;