Если ваш уведомитель не блокирует поток, вы можете просто создать поток и выполнить уведомление там. Таким образом, ваша программа продолжит работу, пока этот поток ожидает ответа.
Конечно, вам понадобится способ справиться с неудачей. Вы могли бы попробовать три раза, и если это все еще не удается, напишите уведомление в журнал или что-то в этом роде.
Лучшее (наиболее надежное) решение - использовать очередь заданий. Таким образом, если работа не удалась сразу, вы можете проверить и повторно отправить ее на работу.