Separate IO to a different thread

@oxmane Please CR
We are sending the thread a stop request but never giving it a chance to stop.
Shouldn't we have some reporter.join(TIMEOUT) before we interrupt it?