self._base_error is None):
self._base_error = exc
- propagate_cancellation_error = \
- exc if et is exceptions.CancelledError else None
+ if et is not None and issubclass(et, exceptions.CancelledError):
+ propagate_cancellation_error = exc
+ else:
+ propagate_cancellation_error = None
if self._parent_cancel_requested:
# If this flag is set we *must* call uncancel().
if self._parent_task.uncancel() == 0:
if propagate_cancellation_error and not self._errors:
raise propagate_cancellation_error
- if et is not None and et is not exceptions.CancelledError:
+ if et is not None and not issubclass(et, exceptions.CancelledError):
self._errors.append(exc)
if self._errors:
if self._state is _State.EXPIRING:
self._state = _State.EXPIRED
- if self._task.uncancel() <= self._cancelling and exc_type is exceptions.CancelledError:
- # Since there are no new cancel requests, we're
- # handling this.
- raise TimeoutError from exc_val
+ if self._task.uncancel() <= self._cancelling and exc_type is not None:
+ if issubclass(exc_type, exceptions.CancelledError):
+ # Since there are no new cancel requests, we're
+ # handling this.
+ raise TimeoutError from exc_val
elif self._state is _State.ENTERED:
self._state = _State.EXITED