I've dug into this more, and it seems there's a third factor at work: conch.
In one of the functions called before this data is written, conch is shelling out to a command. Obviously it's also mucking around with stdin/stdout/stderr.
Only when conch is called, is this error generated. Not shelling out makes the problem go away. So it's an interaction between pr-str, conch and/or clojure.java.shell, and Timbre-- all three of which are manipulating *out* which I'm guessing is not thread-safe.
I don't know the solution yet but starting to understand the problem anyway.
-ken
--
-------