(Unity) Как правильно пробросить return, работая с корутинами

Хочу дождаться ответ от сервера и вернуть его прямо из того же метода с отправкой данных. В данном случае видно, что возвращаю gameobject. Есть корутин по которому я определяю, когда нам приходит ответ, в коде ошибка на строчке с запуском корутина, видно, что я не могу вернуть result, так как он внутри анонимной функции, а не основной. Причём тут понятно, что основная функция отработает быстрее корутина, так что я даже присвоить переменную не смогу из вне. Подскажите, что в данном случае можно сделать? Очень бы хотелось сохранить именно такой вид возвращения игрового объекта.

    public static GameObject Instantiate(GameObject gameObject, Vector3 position, Quaternion rotation, string name = "", bool mine = false)
    {
        ClientSend.Instantiate(gameObject, position, rotation, name, mine);

        ThreadManager.instance.StartCoroutine(WaitGameObject((result) => { return result; }));
    }

    public static IEnumerator WaitGameObject(System.Action<GameObject> result)
    {
        while(currentSpawnedObject == null)
        {
            yield return new WaitForEndOfFrame();
        }
        result(currentSpawnedObject);
        yield return currentSpawnedObject;
    }

Ответы (0 шт):