@Override
    public int read(byte[] arg0) throws IOException {
        try {
            return delegate.read(arg0);
        } catch (IOException | RuntimeException e) {
            observer.exceptionOccurred(e);
            throw new RuntimeException("The observer failed to throw per API contract.");
        }
    }
@see java.io.InputStream#read(byte[])
src/nu/validator/io/ObservableInputStream.java