diff --git a/Signal/src/call/Speakerbox/CallKitCallUIAdaptee.swift b/Signal/src/call/Speakerbox/CallKitCallUIAdaptee.swift index 131b17971..1581012d9 100644 --- a/Signal/src/call/Speakerbox/CallKitCallUIAdaptee.swift +++ b/Signal/src/call/Speakerbox/CallKitCallUIAdaptee.swift @@ -228,14 +228,12 @@ final class CallKitCallUIAdaptee: NSObject, CallUIAdaptee, CXProviderDelegate { return } - self.callService.handleOutgoingCall(call).then { () -> Void in - action.fulfill() - self.provider.reportOutgoingCall(with: call.localId, startedConnectingAt: nil) - }.catch { error in - Logger.error("\(self.TAG) error \(error) in \(#function)") - self.callManager.removeCall(call) - action.fail() - } + // We can't wait for long before fulfilling the CXAction, else CallKit will show a "Failed Call". We don't + // actually need to wait for the outcome of the handleOutgoingCall promise, because it handles any errors by + // manually failing the call. + _ = self.callService.handleOutgoingCall(call) + action.fulfill() + self.provider.reportOutgoingCall(with: call.localId, startedConnectingAt: nil) } func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {