Rearrange build process cleanup to avoid spawning a reader thread

This is a follow-up to bbf9f7460fc8e6e4c63f5bbe8630b11ca53f3710.

If we read from the pipe before calling Process.wait, we can avoid
spawning a thread to do the read while continuing to avoid the deadlock
that the thread was introduced to solve.