async def METHOD_NAME(self) -> Tuple[str, int]:
    if self._master_addr is None:
        started_by_us = await self.start_watching()
        try:
            assert self._waiter is None
            self._waiter = asyncio.get_running_loop().create_future()
            await self._waiter
        finally:
            if started_by_us:
                self.stop_watching()
                await self.wait_stopped_watching()
    assert self._master_addr
    return self._master_addr