Отсутсвие await гарантирует выполнение async метода?
await только подписывается на результат awaitable (в нашем случае Task). И то будет ли выполнятся этот не зависит от await т.е. от тех кто его может ждать. т.е. ответ - Да, Notify() будет себе часами молотить. Если внутри будет ошибка, то лучше подписаться на результат и скипнуть ошибку. Notify().ContinueWith(t=> { var x = t.Exception; ... });Task.Run(async () =>
Так делать не стоит, это ошибка, которую часто совершают. 'async => ()' это уже стейт-машина которая запускается вызовом, ее не надо шедулить через таски. 
Правильный пример:new Func<Task>(async =>  {
    try
    {
        await _notification.Notify();
    } catch(Exception ex) {
        // TODO: Логируем исключение
    }
}).Invoke();
Но опять же это всё не нужно в текущей задаче, можно вызвать ContinueWith.
Вот так это делается:Task.Run(async () =>
{
    try
    {
        await _notification.Notify();
    } catch(Exception ex) {
        // TODO: Логируем исключение
    }
});