Prepare to generalize a raczlib.Reader
diff --git a/lib/raczlib/reader.go b/lib/raczlib/reader.go
index 2a99272..53a6a5e 100644
--- a/lib/raczlib/reader.go
+++ b/lib/raczlib/reader.go
@@ -106,7 +106,7 @@
 	// Calling Seek may reset the state machine to "State A".
 	//
 	// The initial state is "State A".
-	zlibReader       io.ReadCloser
+	zlibReader       io.Reader
 	inImplicitZeroes bool
 
 	// buf is a scratch buffer.
@@ -249,12 +249,14 @@
 }
 
 func (r *Reader) transitionFromStateBToStateC() error {
-	if err := r.zlibReader.Close(); err != nil {
-		if err == io.EOF {
-			err = io.ErrUnexpectedEOF
+	if c, ok := r.zlibReader.(io.Closer); ok {
+		if err := c.Close(); err != nil {
+			if err == io.EOF {
+				err = io.ErrUnexpectedEOF
+			}
+			r.err = err
+			return r.err
 		}
-		r.err = err
-		return r.err
 	}
 	r.zlibReader = nil
 	r.inImplicitZeroes = true