code: async def _wait_exponentially(self, exception, max_wait_time=300):
          
          wait_time = min(
              (2 ** self._connection_attempts) + random.random(), max_wait_time
          )
          try:
              wait_time = exception.response["headers"]["Retry-After"]
          except (KeyError, AttributeError):
              pass
          self._logger.debug("Waiting %s seconds before reconnecting.", wait_time)
          await asyncio.sleep(float(wait_time))
docs: Wait exponentially longer for each connection attempt.
  
          Calculate the number of seconds to wait and then add
          a random number of milliseconds to avoid coincendental
          synchronized client retries. Wait up to the maximium amount
          of wait time specified via 'max_wait_time'. However,
          if Slack returned how long to wait use that.