Варианта два:
1. Написать таки идиоматичный асинхроный код с использованием completion handler (не переживай, больно только первый раз). Если тебе надо вызывать несколько запросов цепочкой - можно их вкладывать в completion handler предыдущего запроса. Но в показанном примере я не вижу нужды в этом.
2.
Использовать соответствующие библиотеки.
Напомню, что лочить UI тред плохая идея.