diff options
Diffstat (limited to 'lib/_debugger.js')
-rw-r--r-- | lib/_debugger.js | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/_debugger.js b/lib/_debugger.js index 4dd9f5363..f9e24768f 100644 --- a/lib/_debugger.js +++ b/lib/_debugger.js @@ -25,6 +25,7 @@ var util = require('util'), vm = require('vm'), repl = require('repl'), inherits = util.inherits, + assert = require('assert'), spawn = require('child_process').spawn; exports.start = function(argv, stdin, stdout) { @@ -1612,6 +1613,7 @@ Interface.prototype.trySpawn = function(cb) { childArgs = this.args; this.killChild(); + assert(!this.child); if (this.args.length === 2) { var match = this.args[1].match(/^([^:]+):(\d+)$/); @@ -1647,12 +1649,10 @@ Interface.prototype.trySpawn = function(cb) { } } - if (!this.child) { - this.child = spawn(process.execPath, childArgs); + this.child = spawn(process.execPath, childArgs); - this.child.stdout.on('data', this.childPrint.bind(this)); - this.child.stderr.on('data', this.childPrint.bind(this)); - } + this.child.stdout.on('data', this.childPrint.bind(this)); + this.child.stderr.on('data', this.childPrint.bind(this)); this.pause(); @@ -1709,8 +1709,10 @@ Interface.prototype.trySpawn = function(cb) { client.connect(port, host); } - setTimeout(function() { - self.print('connecting to port ' + port + '..', true); - attemptConnect(); - }, 50); + this.child.stderr.once('data', function() { + setImmediate(function() { + self.print('connecting to port ' + port + '..', true); + attemptConnect(); + }); + }); }; |