ты вместо
guard let self = self else { return }
self.someFunc(self.someFunc2(self.someValue))
можешь написать что то вроде
self?.someFunc <$> self?.someFunc2 <$> self?.someValue
если какая то функция не приносит денег, вызываем какую то функцию 2, если и она не приносит денег, вызываем заново каккю то функцию