better to do `self.session is None`