diff --git a/lib/net/pool.js b/lib/net/pool.js index cf741a3c..3711800d 100644 --- a/lib/net/pool.js +++ b/lib/net/pool.js @@ -368,22 +368,9 @@ Pool.prototype.listen = co(function* listen() { if (!this.options.listen) return; - yield this._listen(); + yield this.server.listen(this.address.port, '0.0.0.0'); }); -/** - * Listen on server socket. - * @private - * @returns {Promise} - */ - -Pool.prototype._listen = function _listen() { - var self = this; - return new Promise(function(resolve, reject) { - self.server.listen(self.address.port, '0.0.0.0', co.wrap(resolve, reject)); - }); -}; - /** * Stop listening on server socket. * @private @@ -397,22 +384,9 @@ Pool.prototype.unlisten = co(function* unlisten() { if (!this.options.listen) return; - yield this._unlisten(); + yield this.server.close(); }); -/** - * Unlisten on server socket. - * @private - * @returns {Promise} - */ - -Pool.prototype._unlisten = function unlisten() { - var self = this; - return new Promise(function(resolve, reject) { - self.server.close(co.wrap(resolve, reject)); - }); -}; - /** * Handle incoming connection. * @private diff --git a/lib/net/tcp-browser.js b/lib/net/tcp-browser.js index 2fa1e3a8..f21a96e0 100644 --- a/lib/net/tcp-browser.js +++ b/lib/net/tcp-browser.js @@ -16,12 +16,12 @@ tcp.createSocket = function createSocket(port, host, proxy) { tcp.createServer = function createServer() { var server = new EventEmitter(); - server.listen = function listen(port, host, callback) { - callback(); + server.listen = function listen(port, host) { server.emit('listening'); + return Promise.resolve(); }; - server.close = function close(callback) { - callback(); + server.close = function close() { + return Promise.resolve(); }; server.address = function address() { return { diff --git a/lib/net/tcp.js b/lib/net/tcp.js index d624e486..d83518b4 100644 --- a/lib/net/tcp.js +++ b/lib/net/tcp.js @@ -6,6 +6,7 @@ 'use strict'; +var EventEmitter = require('events').EventEmitter; var net = require('net'); var tcp = exports; @@ -14,5 +15,46 @@ tcp.createSocket = function createSocket(port, host, proxy) { }; tcp.createServer = function createServer() { - return new net.Server(); + var server = new net.Server(); + var ee = new EventEmitter(); + + ee.listen = function listen(port, host) { + return new Promise(function(resolve, reject) { + server.listen(port, host, wrap(resolve, reject)); + }); + }; + + ee.close = function close() { + return new Promise(function(resolve, reject) { + server.close(wrap(resolve, reject)); + }); + }; + + ee.address = function address() { + return server.address(); + }; + + server.on('listening', function() { + ee.emit('listening'); + }); + + server.on('connection', function(socket) { + ee.emit('connection', socket); + }); + + server.on('error', function(err) { + ee.emit('error', err); + }); + + return ee; }; + +function wrap(resolve, reject) { + return function(err, result) { + if (err) { + reject(err); + return; + } + resolve(result); + }; +}