docs: def get_waiter(self, waiter_name):
          """Returns an object that can wait for some condition.
  
          :type waiter_name: str
          :param waiter_name: The name of the waiter to get. See the waiters
              section of the service docs for a list of available waiters.
  
          :returns: The specified waiter object.
          :rtype: botocore.waiter.Waiter
          """
          config = self._get_waiter_config()
          if not config:
              raise ValueError("Waiter does not exist: %s" % waiter_name)
          model = waiter.WaiterModel(config)
          mapping = {}
          for name in model.waiter_names:
              mapping[xform_name(name)] = name
          if waiter_name not in mapping:
              raise ValueError("Waiter does not exist: %s" % waiter_name)
  
          return waiter.create_waiter_with_client(
              mapping[waiter_name], model, self, loop=self._loop)