# Buggy code
async def initialize(self):
    await self.bot.wait_until_ready()
    # Unlike most cases, we want the cache to exit before migration.
    await self.music_cache.initialize(self.config)
    await self._migrate_config(
        from_version=await self.config.schema_version(), to_version=_SCHEMA_VERSION
    )
    pass_config_to_dependencies(self.config, self.bot, await self.config.localpath())
    self._restart_connect()
    self._disconnect_task = self.bot.loop.create_task(self.disconnect_timer())
    lavalink.register_event_listener(self.event_handler)
    if not HAS_SQL:
        error_message = (
            "Audio version: {version}\nThis version requires some SQL dependencies to "
            "access the caching features, "
            "your Python install is missing some of them.\n\n"
            "For instructions on how to fix it Google "
            f"`{_ERROR}`.\n"
            "You will need to install the missing SQL dependency.\n\n"
        ).format(version=__version__)
        with contextlib.suppress(discord.HTTPException):
            for page in pagify(error_message):
                await self.bot.send_to_owners(page)
        log.critical(error_message)

    self._ready_event.set()
    self.bot.dispatch("red_audio_initialized", self)


# Traceback (RuntimeError)
Traceback (most recent call last):
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/discord/ext/commands/core.py", line 79, in wrapped
ret = await coro(*args, **kwargs)
File "/home/martinebots/martinebotscogs/cogs_modified/audio/audio.py", line 3183, in play
await self._enqueue_tracks(ctx, query)
File "/home/martinebots/martinebotscogs/cogs_modified/audio/audio.py", line 3885, in _enqueue_tracks
result, called_api = await self.music_cache.lavalink_query(ctx, player, query)
File "/home/martinebots/martinebotscogs/cogs_modified/audio/apis.py", line 911, in lavalink_query
results = await player.load_tracks(query)
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/lavalink/rest_api.py", line 300, in load_tracks
self.__check_node_ready()
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/lavalink/rest_api.py", line 268, in __check_node_ready
raise RuntimeError("Cannot execute REST request when node not ready.")
RuntimeError: Cannot execute REST request when node not ready.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/discord/ext/commands/bot.py", line 863, in invoke
await ctx.command.invoke(ctx)
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/discord/ext/commands/core.py", line 728, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/discord/ext/commands/core.py", line 88, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: RuntimeError: Cannot execute REST request when node not ready.```

# Fixed code
async def initialize(self) -> None:
    await self.bot.wait_until_ready()
    # Unlike most cases, we want the cache to exit before migration.
    try:
        pass_config_to_dependencies(
            self.config, self.bot, await self.config.localpath()
        )
        self.music_cache = MusicCache(self.bot, self.session)
        await self.music_cache.initialize(self.config)
        await self._migrate_config(
            from_version=await self.config.schema_version(), to_version=_SCHEMA_VERSION
        )
        dat = get_playlist_database()
        if dat:
            dat.delete_scheduled()
        self._restart_connect()
        self._disconnect_task = self.bot.loop.create_task(self.disconnect_timer())
        lavalink.register_event_listener(self.event_handler)
    except Exception as err:
        log.exception(
            "Audio failed to start up, please report this issue.", exc_info=err
        )
        raise err

    self._ready_event.set()