new_loop.close()
            thread = threading.Thread(target=thread_target)
            thread.start()
            thread.join()
            result = result_container[0]
            if isinstance(result, Exception):
                raise result
            return result
        else:
            result = loop.run_until_complete(self._arun(*args, **kwargs))
            loop.close()
            return result