read output from external runner in separate threads. this should prevent blocking in windows