Github user bananer commented on a diff in the pull request:
https://github.com/apache/thrift/pull/1437#discussion_r154668539
--- Diff: lib/js/src/thrift.js ---
@@ -599,8 +599,8 @@ Thrift.TWebSocketTransport.prototype = {
//If the user made calls before the connection was fully
//open, send them now
this.send_pending.forEach(function(elem) {
- this.socket.send(elem.buf);
- this.callbacks.push((function() {
+ self.socket.send(elem.buf);
--- End diff --
In short, `this` inside of a `function()` in JavaScript is not transferred
reliably from outer scopes. Try setting a breakpoint at this line and you will
see that `self` and `this` are different things here.
It's a bit of a race condition to have this block actually execute, but
calling a service method right after opening the transport crashed here
repeatedly in firefox.
Long version:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
---