code: def start(self) -> asyncio.Future:
          
          # TODO: Add Windows support for graceful shutdowns.
          if os.name != "nt":
              signals = (signal.SIGHUP, signal.SIGTERM, signal.SIGINT)
              for s in signals:
                  self._event_loop.add_signal_handler(s, self.stop)
  
          future = asyncio.ensure_future(self._connect_and_read(), loop=self._event_loop)
  
          if self.run_async or self._event_loop.is_running():
              return future
  
          return self._event_loop.run_until_complete(future)
docs: Starts an RTM Session with Slack.
  
          Makes an authenticated call to Slack's RTM API to retrieve
          a websocket URL and then connects to the message server.
          As events stream-in we run any associated callbacks stored
          on the client.
  
          If 'auto_reconnect' is specified we
          retrieve a new url and reconnect any time the connection
          is lost unintentionally or an exception is thrown.
  
          Raises:
              SlackApiError: Unable to retreive RTM URL from Slack.