Keywords "async" and "await" in C#

async Task<int> Add(int a, int b)
{
    return await Task.Run(() =>
        {
            Thread.Sleep(3000);
            return a + b;
    });
}

//Start new thread and wait for Add() result
async void Test()
{
    var result = await Add(5, 3);
    //result is 8
}