def run(self, *args, **kwargs):
        """
        Run method that delegates to the appropriate async implementation.
        """
        try:
            # Try to get the current event loop
            try:
                loop = asyncio.get_running_loop()
                if loop.is_running():
                    # We're in an async context, but this is a sync method
                    # We need to run the async method in a new thread
                    return run_coroutine_in_new_thread(
                        self.run_async(*args, **kwargs)
                    )
            except RuntimeError:
                # No event loop is running, use asyncio.run
                return asyncio.run(self.run_async(*args, **kwargs))
        except Exception as e:
            raise e

        Run method that delegates to the appropriate async implementation.
        
src/upsonic/client/base.py