new StreamReader(new InputStreamReader(process.getInputStream(), processCharset))));
worker.socketFuture().addListener(
new Runnable() {
@Override public void run() {
try {
OpenedSocket openedSocket = worker.socketFuture().get();
logger.fine("successfully opened the pipe from the worker");
socketWriter = openedSocket.writer();
runningReadStreams.addAndGet(1);
openStreams.addAndGet(1);
streamExecutor.submit(threadRenaming("worker-socket",
new StreamReader(openedSocket.reader())));
} catch (ExecutionException e) {
notifyFailed(e.getCause());
} catch (InterruptedException e) {
throw new AssertionError("impossible, future is already done.");
}