Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: Cannot read property 'fulfill' of undefined #226

Closed
iperevozchikov opened this issue May 25, 2016 · 2 comments
Closed

TypeError: Cannot read property 'fulfill' of undefined #226

iperevozchikov opened this issue May 25, 2016 · 2 comments

Comments

@iperevozchikov
Copy link

Hello guys! I've met some hard reproduced bug few days ago It's related to message handling in rtm mode:

at RTMClient._handleMsgResponse (/.../node_modules/@slack/client/lib/clients/rtm/client.js:772:22)
at RTMClient._handlePong (/.../node_modules/@slack/client/lib/clients/rtm/client.js:606:8)
at RTMClient._handleWsMessageInternal (/.../node_modules/@slack/client/lib/clients/rtm/client.js:426:10)
at RTMClient.handleWsMessage (/.../node_modules/@slack/client/lib/clients/rtm/client.js:410:10)
at WebSocket.wrapper (/.../node_modules/@slack/client/node_modules/lodash/index.js:3095:19)
at emitTwo (events.js:106:13)
at WebSocket.emit (events.js:191:7)
at Receiver.ontext (/.../node_modules/ws/lib/WebSocket.js:841:10)
at /.../node_modules/ws/lib/Receiver.js:536:18
at Receiver.applyExtensions (/.../node_modules/ws/lib/Receiver.js:371:5)
at /.../node_modules/ws/lib/Receiver.js:508:14
at Receiver.flush (/.../node_modules/ws/lib/Receiver.js:347:3)
at Receiver.finish (/.../node_modules/ws/lib/Receiver.js:541:12)
at Receiver.expectHandler (/.../node_modules/ws/lib/Receiver.js:499:31)
at Receiver.add (/.../node_modules/ws/lib/Receiver.js:103:24)
at TLSSocket.realHandler (/.../node_modules/ws/lib/WebSocket.js:825:20)
at emitOne (events.js:96:13)
at TLSSocket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:172:18)
at TLSSocket.Readable.push (_stream_readable.js:130:10)
at TLSWrap.onread (net.js:542:20)   

I did fast investigation and found possible place, that may be cause of problem: link
In that line you get responseHandler by msgId, but you do it in unsafe way, because object may return undefined value, but you expect Promise.
Used last version of SDK: 3.3.0.

@rdlh
Copy link

rdlh commented May 25, 2016

Same problem here!

at RTMClient._handleMsgResponse (@slack/client/lib/clients/rtm/client.js line 761 col 22) responseHandler.fulfill(res);
at RTMClient._handlePong (@slack/client/lib/clients/rtm/client.js line 595 col 8) this._handleMsgResponse(message.reply_to, null, message);
at RTMClient._handleWsMessageInternal (@slack/client/lib/clients/rtm/client.js line 415 col 10) this._handlePong(message);
at RTMClient.handleWsMessage (@slack/client/lib/clients/rtm/client.js line 399 col 10) this._handleWsMessageInternal(message.type, message);
at WebSocket.wrapper (@slack/client/node_modules/lodash/index.js line 3095 col 19) return fn.apply(thisArg, arguments);
at WebSocket.emit (events.js line 110 col 17)
at Receiver.ontext (@slack/client/node_modules/ws/lib/WebSocket.js line 841 col 10) self.emit('message', data, flags);
at <unknown> (@slack/client/node_modules/ws/lib/Receiver.js line 536 col 18) self.ontext(messageBuffer.toString('utf8'), {masked: state.masked, buffer: messageBuffer});
at Receiver.applyExtensions (@slack/client/node_modules/ws/lib/Receiver.js line 371 col 5) callback(null, messageBuffer);
at <unknown> (@slack/client/node_modules/ws/lib/Receiver.js line 508 col 14) self.applyExtensions(packet, state.lastFragment, state.compressed, function(err, buffer) {
at Receiver.flush (@slack/client/node_modules/ws/lib/Receiver.js line 347 col 3) handler(function() {
at Receiver.opcodes.1.finish (@slack/client/node_modules/ws/lib/Receiver.js line 541 col 12) this.flush();
at Receiver.expectHandler (@slack/client/node_modules/ws/lib/Receiver.js line 499 col 31)  opcodes['1'].finish.call(self, null, data);
at Receiver.add (@slack/client/node_modules/ws/lib/Receiver.js line 103 col 24) this.expectHandler.call(this, bufferForHandler);
at TLSSocket.realHandler (@slack/client/node_modules/ws/lib/WebSocket.js line 825 col 20)  self._receiver.add(data);
at TLSSocket.emit (events.js line 107 col 17)

ghost pushed a commit that referenced this issue May 27, 2016
@ghost
Copy link

ghost commented May 27, 2016

The PR above will fix this.

It should, in theory, be very hard to get to that state. Any extra info on how it happened?

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants