- UnsupportedError, MalformedError, EncryptedError, ResourceLimitError,
and MissingPartError all subclass ConvertError, so an existing
`except anydoc.ConvertError` keeps catching every one of them
- the part or stream at fault rides on `part`, the limit crossed on
`limit`, which is detail the JS bindings cannot carry
- an unreadable file still raises the OSError subclass any other read
of it would
- the root, node, wasm, and python readmes each document the failure
model, a worked example, and a table, in the same slot and shape
- python's covers the exception types it already raises