code: def test_respects_timeout(self, mock_time: MockTime):
      t0 = mock_time.now()
      dt = 300 * SECOND
      backoff = retry.ExponentialBackoff(
          initial_sleep=SECOND, max_sleep=10 * dt, timeout_at=t0 + dt
      )
      with pytest.raises(MyError):
          for _ in range(9999):
              mock_time.sleep(
                  backoff.next_sleep_or_reraise(
                      MyError()
                  ).total_seconds()
              )
  
      assert t0 + dt <= mock_time.now() <= t0 + 2 * dt
  
imports: import asyncio
  import dataclasses
  import datetime
  from typing import Iterator
  from unittest import mock
  import pytest
  from wandb.sdk.lib import retry
label_desc: Use image node_id 2 for calling the TestExponentialBackoff obj's underlying member method code with example usage: obj.test_respects_timeout(mock_time) without return types