So to me, this looks like you're testing for a `dcd_rewind()` failure then reloading via `open_dcd_read`.  Is this really necessary?  For example, couldn't we just raise an exception as soon as `result != 0`?