C его помощью можно передавать информацию асинхронно между потоками исполнения.
В примере выше создается обещание выдать строку и запускается таск в сервисе выполнения.
В потоке выполняющем работу через некоторое время появляется результат, а поток ждущий исполнения получает его по появлению.
Это достаточно высокоуровневая абстракция, обходящаяся без локов и wait, notify.