diff --git a/lib/StripeResource.js b/lib/StripeResource.js index 6bc17dd3d6..2deaf1671f 100644 --- a/lib/StripeResource.js +++ b/lib/StripeResource.js @@ -113,7 +113,7 @@ StripeResource.prototype = { res.on('data', (chunk) => { response += chunk; }); - res.on('end', () => { + res.once('end', () => { const headers = res.headers || {}; // NOTE: Stripe responds with lowercase header names/keys. @@ -365,7 +365,7 @@ StripeResource.prototype = { req.setTimeout(timeout, this._timeoutHandler(timeout, req, callback)); - req.on('response', (res) => { + req.once('response', (res) => { if (this._shouldRetry(res, requestRetries)) { return retryRequest(makeRequest, apiVersion, headers, requestRetries); } else { @@ -381,13 +381,16 @@ StripeResource.prototype = { } }); - req.on('socket', (socket) => { + req.once('socket', (socket) => { if (socket.connecting) { - socket.on(isInsecureConnection ? 'connect' : 'secureConnect', () => { - // Send payload; we're safe: - req.write(requestData); - req.end(); - }); + socket.once( + isInsecureConnection ? 'connect' : 'secureConnect', + () => { + // Send payload; we're safe: + req.write(requestData); + req.end(); + } + ); } else { // we're already connected req.write(requestData); diff --git a/lib/resources/Files.js b/lib/resources/Files.js index d2541b8e24..518120a555 100644 --- a/lib/resources/Files.js +++ b/lib/resources/Files.js @@ -36,7 +36,7 @@ module.exports = StripeResource.extend({ .on('data', (line) => { bufferArray.push(line); }) - .on('end', () => { + .once('end', () => { const bufferData = Object.assign({}, data); bufferData.file.data = Buffer.concat(bufferArray); const buffer = fn(method, bufferData, headers); diff --git a/lib/stripe.js b/lib/stripe.js index 9a467d3ac9..5e9e7e5ca5 100644 --- a/lib/stripe.js +++ b/lib/stripe.js @@ -43,10 +43,11 @@ function Stripe(key, version) { value: new EventEmitter(), enumerable: false, configurable: false, - writeable: false, + writable: false, }); this.on = this._emitter.on.bind(this._emitter); + this.once = this._emitter.once.bind(this._emitter); this.off = this._emitter.removeListener.bind(this._emitter); this._api = { diff --git a/test/flows.spec.js b/test/flows.spec.js index 28a98be4a6..65d70f45a4 100644 --- a/test/flows.spec.js +++ b/test/flows.spec.js @@ -326,8 +326,6 @@ describe('Flows', function() { .slice(2); function onRequest(request) { - stripe.off('request', onRequest); - expect(request).to.eql({ api_version: 'latest', idempotency_key: idempotencyKey, @@ -339,7 +337,7 @@ describe('Flows', function() { done(); } - stripe.on('request', onRequest); + stripe.once('request', onRequest); stripe.charges .create( @@ -411,7 +409,7 @@ describe('Flows', function() { done(new Error('How did you get here?')); } - stripe.on('response', onResponse); + stripe.once('response', onResponse); stripe.off('response', onResponse); stripe.charges