[ https://issues.apache.org/jira/browse/THRIFT-4403?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16276885#comment-16276885 ]
ASF GitHub Bot commented on THRIFT-4403: ---------------------------------------- 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 > thrift.js: Incorrect usage of 'this' in TWebSocketTransport.__onOpen > -------------------------------------------------------------------- > > Key: THRIFT-4403 > URL: https://issues.apache.org/jira/browse/THRIFT-4403 > Project: Thrift > Issue Type: Bug > Components: JavaScript - Library > Reporter: Philip Frank > > Inside the forEach callback 'this' will be the global object, not the > transport object, as the implementation seems to assume. -- This message was sent by Atlassian JIRA (v6.4.14#64029)