SocketCluster / SocketCluster/socketcluster-client
TypeError: cb is not a function
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 300
- Forks
- 90
- PR merge metrics
- No merged PRs in 30d
Description
Problem
I've stumbled upon non-flaky but random bug - I have hundreds of similar calls, but only for few of them the bug applies. See below the code snippet and error.
class MyCommsWrapper {
...
call(methodName, args) {
return new Promise((resolve, reject) => {
try {
const cb = (err, res) => err ? reject(err) : resolve(res)
console.assert(typeof cb === 'function')
this.socket.emit(methodName, JSON.stringify(args), cb);
} catch(err) {
console.log(err) // <-- Here originates the logs below.
throw err
}
});
}
...
}
TypeError: cb is not a function
at afterWrite (_stream_writable.js:463:3)
at onwrite (_stream_writable.js:454:7)
at Socket._writeGeneric (net.js:777:5)
at Socket._writev (net.js:782:8)
at doWrite (_stream_writable.js:394:12)
at clearBuffer (_stream_writable.js:500:5)
at Socket.Writable.uncork (_stream_writable.js:312:7)
at Sender.sendFrame (./node_modules/socketcluster-client/node_modules/ws/lib/sender.js:353:20)
at Sender.send (./node_modules/socketcluster-client/node_modules/ws/lib/sender.js:272:12)
at WebSocket.send (./node_modules/socketcluster-client/node_modules/ws/lib/websocket.js:354:18)
Expected behavior
I'd expect it to just work, or at least give more informative error how to fix it.
I'm clueless how the callback function created exactly the same way, and asserted to be a function, may sometimes be an function and sometimes not. Also did some digging along stack trace to no avail.
Details
Please advice how to debug this in first place and what other details would be useful.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the failure from the reported MyCommsWrapper.call and socket.emit path, then inspect the stack entries in socketcluster-client/node_modules/ws/lib/sender.js and websocket.js. Trace why the callback reaching the writable stream is not callable, and document a reproducible cause with an informative error or confirmed fix.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100