When the in-reader passed to clojure.core.server/remote-prepl reaches end-of-stream, an attempt is made to close the socket's reader. This however blocks the main-thread as (mostly) the socket is still being read from.
What I would expect to happen in this case is that upon ^D the initial repl re-appears (similar to how (clojure.core.server/io-prepl) behaves).
What does work:
Looking at the code though it seems that this is not the intented way to terminate the prepl.