Skip to content

end event listener registration error #962

@emarteca

Description

@emarteca

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions