This entails reordering the code which reads the answer, to check for
the process exiting before reading its output. This also means that
we deadlock the service if it tries to write more than a pipe-buffer's
worth of stuff, but we're expecting a single character, dammit -- it
shouldn't try to give us an essay.
If the timeout goes off, we report a temporary failure, as with any
other untoward situation.