try {
return ch.read(buf, null).get();
} catch (InterruptedException e) {
ch.close();
Thread.currentThread().interrupt();
throw new ClosedByInterruptException();
} catch (ExecutionException e) {
launderExecutionException(e); // always throws
throw new AssertionError("unreachable");
}
}