OpenLevelなどの、クライアント・サーバー間の通信が伴う処理で、失敗した場合の処理はどのように行うべきですか

クライアントがサーバーに接続する多くの関数で、タイムアウトや失敗時の処理(コールバック等)の実行(登録)はどのように行うべきなのでしょうか。

例えば、マッチメイキングサーバーからマッチメイク結果を受け取って、指定のサーバーに接続しようとするユースケースを考えたとき、何かしらの原因でゲームサーバーが起動に失敗していて(あるいはネットワーク的な要因で)Travelに失敗するケースがあると思います。そのようなとき、失敗した旨をダイアログとして出す、ゲーム内の何かしらの処理をロールバックする必要などが出てきた場合、どのように実装する方法があるのか、教えて頂けると幸いです。