diff --git a/lib/request.js b/lib/request.js index 643cf65..224cedb 100644 --- a/lib/request.js +++ b/lib/request.js @@ -225,16 +225,22 @@ module.exports = function (app) { return this } obj.close = function(callback) { - if (server && server.close && keepOpen === false) { + if (server && server.close) { server.close(callback); } + else if(callback) { + callback(); + } + return this } methods.forEach(function (method) { obj[method] = function (path) { return new Test(server, method, path) .on('end', function() { - obj.close(); + if(keepOpen === false) { + obj.close(); + } }); }; }); diff --git a/test/request.js b/test/request.js index 217b4a4..75125dc 100644 --- a/test/request.js +++ b/test/request.js @@ -205,8 +205,20 @@ describe('request', function () { }); }); + it('can close server after using keepOpen()', function (done) { + var server = require('http').createServer(function (req, res) { + res.writeHeader(200, { 'content-type' : 'text/plain' }); + res.end('hello world'); + }); + var cachedRequest = request(server).keepOpen(); + cachedRequest.close(function (err) { + should.not.exist(server.address()); + done(); + }); }); +}); + isBrowser && describe('Browser', function () { it('cannot request a functioned "app"', function () { function tryToRequestAFunctionedApp() {