Skip to content

Commit

Permalink
Add message object to callback arguments
Browse files Browse the repository at this point in the history
closes #11
  • Loading branch information
dougwilson committed Dec 23, 2014
1 parent 833ae59 commit 3008aee
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 5 deletions.
5 changes: 5 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
unreleased
==========

* Add message object to callback arguments

2.1.1 / 2014-10-22
==================

Expand Down
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,12 @@ has already finished, the listener will be invoked.
Listening to the end of a response would be used to close things associated
with the response, like open files.

Listener is invoked as `listener(err, res)`.

```js
onFinished(res, function (err) {
onFinished(res, function (err, res) {
// clean up open fds, etc.
// err contains the error is request error'd
})
```

Expand All @@ -46,6 +49,8 @@ has already finished, the listener will be invoked.
Listening to the end of a request would be used to know when to continue
after reading the data.

Listener is invoked as `listener(err, req)`.

```js
var data = ''

Expand All @@ -54,7 +59,7 @@ res.on('data', function (str) {
data += str
})

onFinished(req, function (err) {
onFinished(req, function (err, req) {
// data is read unless there is err
})
```
Expand Down
4 changes: 2 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ var defer = typeof setImmediate === 'function'

function onFinished(msg, listener) {
if (isFinished(msg) !== false) {
defer(listener)
defer(listener, null, msg)
return msg
}

Expand Down Expand Up @@ -161,7 +161,7 @@ function createListener(msg) {
listener.queue = null

for (var i = 0; i < queue.length; i++) {
queue[i](err)
queue[i](err, msg)
}
}

Expand Down
69 changes: 68 additions & 1 deletion test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ var net = require('net')
var onFinished = require('..')

describe('onFinished(res, listener)', function () {
it('should invoke listener given an unknwon object', function (done) {
it('should invoke listener given an unknown object', function (done) {
onFinished({}, done)
})

Expand All @@ -19,6 +19,19 @@ describe('onFinished(res, listener)', function () {
sendget(server)
})

it('should include the response object', function (done) {
var server = http.createServer(function (req, res) {
onFinished(res, function (err, msg) {
assert.ok(!err)
assert.equal(msg, res)
done()
})
setTimeout(res.end.bind(res), 0)
})

sendget(server)
})

it('should fire when called after finish', function (done) {
var server = http.createServer(function (req, res) {
onFinished(res, function () {
Expand Down Expand Up @@ -137,6 +150,26 @@ describe('onFinished(res, listener)', function () {
})
})
})

it('should include the response object', function (done) {
var server = http.createServer(function (req, res) {
onFinished(res, function (err, msg) {
assert.ok(err)
assert.equal(msg, res)
done()
})

socket.on('error', noop)
socket.write('W')
})
var socket

server.listen(function () {
socket = net.connect(this.address().port, function () {
writerequest(this, true)
})
})
})
})

describe('when the response aborts', function () {
Expand Down Expand Up @@ -338,6 +371,20 @@ describe('onFinished(req, listener)', function () {
sendget(server)
})

it('should include the request objecy', function (done) {
var server = http.createServer(function (req, res) {
onFinished(req, function (err, msg) {
assert.ok(!err)
assert.equal(msg, req)
done()
})
req.resume()
setTimeout(res.end.bind(res), 0)
})

sendget(server)
})

it('should fire when called after finish', function (done) {
var server = http.createServer(function (req, res) {
onFinished(req, function () {
Expand Down Expand Up @@ -411,6 +458,26 @@ describe('onFinished(req, listener)', function () {
})
})
})

it('should include the request objecy', function (done) {
var server = http.createServer(function (req, res) {
onFinished(req, function (err, msg) {
assert.ok(err)
assert.equal(msg, req)
done()
})

socket.on('error', noop)
socket.write('W')
})
var socket

server.listen(function () {
socket = net.connect(this.address().port, function () {
writerequest(this, true)
})
})
})
})

describe('when the request aborts', function () {
Expand Down

0 comments on commit 3008aee

Please sign in to comment.