Would it be useful for `RunError` to have a generic user error type? It would probably be `()` by default.