af608792da
Previously a failed connect() / start_notify() left self._client pointing at a broken BleakClient. On the next poll is_connected returned False but the stale object caused confusing errors. Now the client is only assigned after both steps succeed; on any exception we try a clean disconnect and reset to None so the next attempt starts completely fresh. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>