Нужно изучить асинхронность.
Чем возвращение void отличается от Task в async методах
static void Main(string[] args)
{
Task.WaitAll(Test());
}
static async Task Test()
{
List<Country> countries = await RESTCountriesAPI.GetAllCountriesAsync();
Console.WriteLine(countries.Count);
}