'Disconnect from the child process and set up a timeout to wait for it
to exit.
@rtype: L{Deferred <defer.Deferred>}
@return: A deferred which will be called back when the child process
exits.'

def eomReceived(self):

    if (not self.done):
        self.protocol.transport.loseConnection()
        self._timeoutCallID = self.reactor.callLater(self.completionTimeout, self._completionCancel)
    return self.completion
