@@ -108,6 +108,7 @@ function CommandHandle (commands, pid, result, opts, request, waitPromise) {
108108 this . opts = opts || { } ;
109109 this . _request = request ;
110110 this . _waitPromise = waitPromise ;
111+ this . _resolveWait = null ;
111112 this . stdout = result && result . stdout ? result . stdout : '' ;
112113 this . stderr = result && result . stderr ? result . stderr : '' ;
113114}
@@ -135,11 +136,26 @@ CommandHandle.prototype.kill = function () {
135136} ;
136137
137138CommandHandle . prototype . disconnect = function ( ) {
139+ this . _disconnected = true ;
138140 if ( this . _request ) {
139- this . _disconnected = true ;
140141 this . _request . destroy ( ) ;
141142 this . _request = null ;
142143 }
144+ if ( this . _resolveWait ) {
145+ const result = this . result || {
146+ pid : this . pid ,
147+ exitCode : 0 ,
148+ stdout : this . stdout ,
149+ stderr : this . stderr ,
150+ error : ''
151+ } ;
152+ if ( result . exitCode === - 1 ) {
153+ result . exitCode = 0 ;
154+ }
155+ this . result = result ;
156+ this . _resolveWait ( result ) ;
157+ this . _resolveWait = null ;
158+ }
143159 return Promise . resolve ( ) ;
144160} ;
145161
@@ -212,6 +228,7 @@ function connectLiveCommand (commands, procedure, body, opts, fallbackPid) {
212228 cleanupStartTimer ( ) ;
213229 result . pid = pid || result . pid ;
214230 handle = new CommandHandle ( commands , result . pid , null , opts , req , waitPromise ) ;
231+ handle . _resolveWait = resolveWait ;
215232 settled = true ;
216233 resolve ( handle ) ;
217234 }
@@ -248,6 +265,7 @@ function connectLiveCommand (commands, procedure, body, opts, fallbackPid) {
248265 result . error = end && end . error ? end . error : '' ;
249266 if ( handle ) {
250267 handle . result = result ;
268+ handle . _resolveWait = null ;
251269 }
252270 resolveWait ( result ) ;
253271 }
0 commit comments