def METHOD_NAME(*args, **kwargs):
    name = threading.current_thread().name
    inner = coro(*args, **kwargs)
    try:
        # If a loop is currently running in this thread,
        # use a task runner.
        asyncio.get_running_loop()
        if name not in _runner_map:
            _runner_map[name] = _TaskRunner()
        return _runner_map[name].run(inner)
    except RuntimeError:
        pass
    # Run the loop for this thread.
    if name not in _loop_map:
        _loop_map[name] = asyncio.new_event_loop()
    loop = _loop_map[name]
    return loop.run_until_complete(inner)