Como declarar corretamente uma propriedade computada, quando o cálculo usa threads em segundo plano?

Estou tentando declarar uma propriedade computada que consiste em um bloco, executado no thread em segundo plano. Portanto, quando abordo essa propriedade, é nula, pois a computação retorna o resultado quando não está pronta. Como corrigir isso melhor? Obrigado!

enum Result<T> {
   case error(error: Error)
   case success(data: T)
}

var userID: Result<CKRecordID>? {

  var result: Result<CKRecordID>? = nil

  container.fetchUserRecordID { recordID, error in
    if let error = error { result = .error(error: error) }
    if let recordID = recordID { result = .success(data: recordID) }
  }

  return result
}

questionAnswers(1)

yourAnswerToTheQuestion