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

end event listener registration error #962

Open
emarteca opened this issue Dec 9, 2019 · 0 comments
Open

end event listener registration error #962

emarteca opened this issue Dec 9, 2019 · 0 comments

Comments

@emarteca
Copy link

emarteca commented Dec 9, 2019

Hi all, I've been working on a tool to identify instances of events registered to the wrong object in uses of some JavaScript event-driven APIs, as part of a research project.
The tool flagged line 200 in tests/locker-core-api-test.js, on the registration of the “end” event.

The reason I believe this is indicative of an error is as follows (from looking at the nodejs http API documentation).
The return of http.get is an http.ClientRequest. But, “end” is an event on a readable stream, and http.ClientRequest is a writable stream.

Since the argument to the callback passed into http.get is an http.IncomingMessage, which is a readable stream, then my guess is that the listener for “end” maybe should be registered on this variable instead.
Specifically, I would guess the code should instead be

http.get(options, function(res) {
                setTimeout(function() {
                    fs.stat(lconfig.me + "/testURLCallback/result.json", function(err, stats) {
                        if (!err)
                            promise.emit("success", true);
                        else
                            promise.emit("error", err);
                    });
                }, 1500);
	   res.on('data', function(chunk) { // this registration has been moved
 
              })
            }.on("error", function(e) {
                promise.emit("error", e);
            });

Thanks!

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

1 participant