introduce is_error()