docs: def handle_twitter_http_error(e, error_count, call_counter, time_window_start, wait_period):
      """
      This function handles the twitter request in case of an HTTP error.
  
      Inputs:  - e: A twython.TwythonError instance to be handled.
               - error_count: Number of failed retries of the call until now.
               - call_counter: A counter that keeps track of the number of function calls in the current 15-minute window.
               - time_window_start: The timestamp of the current 15-minute window.
               - wait_period: For certain Twitter errors (i.e. server overload), we wait and call again.
  
      Outputs: - call_counter: A counter that keeps track of the number of function calls in the current 15-minute window.
               - time_window_start: The timestamp of the current 15-minute window.
               - wait_period: For certain Twitter errors (i.e. server overload), we wait and call again.
  
      Raises: - twython.TwythonError
      """
      if e.error_code == 401:
          # Encountered 401 Error (Not Authorized)
          raise e
      elif e.error_code == 404:
          # Encountered 404 Error (Not Found)
          raise e
      elif e.error_code == 429:
          # Encountered 429 Error (Rate Limit Exceeded)
          # Sleep for 15 minutes
          error_count += 0.5
          call_counter = 0
          wait_period = 2
          time.sleep(60*15 + 5)
          time_window_start = time.perf_counter()
          return error_count, call_counter, time_window_start, wait_period
      elif e.error_code in (500, 502, 503, 504):
          error_count += 1
          time.sleep(wait_period)
          wait_period *= 1.5
          return error_count, call_counter, time_window_start, wait_period
      else:
          raise e