Feels like this ends up being the point at which the method waits for the process to finish rather than the call to wait below.  Does there need to be handling for interrupts or errored out processes?