Существует ли какая-либо концептуальная разница между следующими двумя частями кода:
async Task TestAsync() 
{
    await Task.Run(() => DoSomeWork());
}
и
Task TestAsync() 
{
    return Task.Run(() => DoSomeWork());
}
Различается ли сгенерированный код:?
  EDIT: Чтобы избежать путаницы с Task.Run, аналогичный случай:
async Task TestAsync() 
{
    await Task.Delay(1000);
}
и
Task TestAsync() 
{
    return Task.Delay(1000);
}
  ПОСЛЕДНИЕ ОБНОВЛЕНИЯ: В дополнение к принятому ответу также существует разница в том, как обрабатывается LocalCallContext: CallContext.LogicalGetData восстанавливается даже там, где нет асинхронности. Почему?
