Block thread in CXProviderDelegate performAnswerCallAction?

From iOS 13 on, when receiving a VoIP push notification, my app needs to call reportNewIncomingCallWithUUID immediately, even before my VoIP server can be queried about the incoming call. The user can accept the new call before my app made sure it even exists. Now my app can not properly exit performAnswerCallAction without informing the CXAnswerCallAction object about the result.


According to https://developer.apple.com/documentation/pushkit/responding_to_voip_notifications_from_pushkit?language=objc


"Instead, wait until you establish a connection and then fulfill the object. While it waits for your app to fulfill the request, the incoming call interface lets the user know that the call is connecting, but not yet ready."


I am supposed to "wait" before "fulfill"-ing (or "fail"-ing, I assume). But according to https://developer.apple.com/documentation/callkit/cxaction/1648982-fulfill?language=objc


"You should only call this method from the implementation of a

CXProviderDelegate
method."


I shouldn't call fulfill from my background worker thread that interacts with the VoIP backend.


Now it's not clear to me, whether it actually is okay to block the thread in performAnswerCallAction until I get a result from the server, an error or a timeout occurs.


I also wonder what happens if the user triggers a performEndCallAction.