Because I skipped a step. The memory is erased, a new program is uploaded and then it resets. It can't possibly maintain communication with the native port during that process.
The best I can offer is to look at the source code for the serial monitor. See how that works.