Primeiro, queria elogiar a qualidade da aula do senhor. muito boa mesmo, consegui entender varias coisas que pra mim antes era tipo ???. 
Vamos lá.. ate o momento o senho me mostrou que um metodo pode ser async com retorno de uma task ex.  public async Task Metodo(), tambem pode ser sem retorno public async void Metodo e pode ter o retorno gererico, mas a minha duvida é nos dois primeiros. Antes de ver esse assunto ate o momento todo metodo que tinha um retorno definido, tinha que ter um return; em seu corpo. Porem eu vi que qd o retorno é Task ele nao da erro de compilação meesmo sem retorna explicitamente com a palavra return. Sendo necessario apenas ter o await, entao minha duvida é qd a tarefa n retorna valor mas o metodo devolve uma tarefa. e nao tem return o que elas devolve?. Como ela sabe que a task terminou? ex: 
Veja que no metodo3 ele retorn uma Task mas nao  precisei escrever return, entao ele return algo?
async void MetodoAsync1()
{
    var tasks = MetodoAsync2();
    var taskss =  MetodoAsync3();
}
async Task MetodoAsync2()
{
    return await Task
}
async Task MetodoAsync3()
{
    await Task
}
 
            