async def METHOD_NAME(self) -> None:
    """Poll status of operation so long as operation is incomplete and
    we have an endpoint to query.
    :raises: OperationFailed if operation status 'Failed' or 'Canceled'.
    :raises: BadStatus if response status invalid.
    :raises: BadResponse if response invalid.
    """
    while not self.finished():
        await self.update_status()
    while not self.finished():
        await self._delay()
        await self.update_status()
    if self._failed(self.status()):
        raise OperationFailed("Operation failed or canceled")
    final_get_url = self._operation.get_final_get_url(self._pipeline_response)  # type: ignore
    if final_get_url:
        self._pipeline_response = await self.request_status(final_get_url)
        _raise_if_bad_http_status_and_method(self._pipeline_response.http_response)