что значит несколько функций?
не могу согласится, это зависит от обстоятельств
во-первых, внутри функции могут быть несколько источников ошибок. Например, есть какая-то deferred операция, которая может возвращать ошибку, тогда хорошо бы сохранять информацию сразу и о том и о том
во-вторых, всякие батчинговые операции, когда по логике имеет смысл продолжать обработку всех задач, даже если какие-то вернули ошибку. В таких случаях тоже хорошо бы ошибки накапливать
в-третьих, это простой способ маркировать ошибку. Как пример:
var errValidate = validate(...)
return combine(errBadInput, errValidate)
var errDb = prepareDb(...)
return combine(errInternal, errDb)
Таким образом мы сохраняем информацию обо всех ошибках доступной для интроспекции, что бывает полезно