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


---

Reply via email to