Skip to content

Commit

Permalink
Emit first error or listening
Browse files Browse the repository at this point in the history
  • Loading branch information
wesleytodd committed Apr 19, 2015
1 parent 8dd1b3a commit 8cfd62a
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 3 deletions.
10 changes: 9 additions & 1 deletion lib/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ var deprecate = require('depd')('express');
var merge = require('utils-merge');
var resolve = require('path').resolve;
var slice = Array.prototype.slice;
var eeFirst = require('ee-first');

/**
* Application prototype.
Expand Down Expand Up @@ -592,7 +593,14 @@ app.render = function(name, options, fn){

app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
var args = Array.prototype.slice.call(arguments);
if (typeof args[args.length - 1] === 'function'){
var done = args.pop();
eeFirst([[server, 'error', 'listening']], function(err, ee, event, eventArgs){
done.apply(ee, eventArgs);
});
}
return server.listen.apply(server, args);
};

/**
Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"cookie-signature": "1.0.6",
"debug": "~2.1.3",
"depd": "~1.0.0",
"ee-first": "~1.1.0",
"escape-html": "1.0.1",
"etag": "~1.5.1",
"finalhandler": "0.3.4",
Expand All @@ -49,8 +50,8 @@
"send": "0.12.2",
"serve-static": "~1.9.2",
"type-is": "~1.6.1",
"vary": "~1.0.0",
"utils-merge": "1.0.0"
"utils-merge": "1.0.0",
"vary": "~1.0.0"
},
"devDependencies": {
"after": "0.8.1",
Expand Down
15 changes: 15 additions & 0 deletions test/app.listen.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

var express = require('../')
, assert = require('assert')
, request = require('supertest');

describe('app.listen()', function(){
Expand All @@ -15,4 +16,18 @@ describe('app.listen()', function(){
done();
});
})

it('should callback on HTTP server errors', function(done){
var app = express();
var app2 = express();

var server = app.listen(9999, function(err){
assert(err === undefined);
app2.listen(9999, function(err){
assert(err.code === 'EADDRINUSE');
server.close();
done();
});
});
})
})

0 comments on commit 8cfd62a

Please sign in to comment.