It feels like we should be able to re-use the main `while () { }` loop, but maybe it's not worth the extra EOF vs. Cancel vs. Command testing.