From dd22b85c0a4202eca24fb60b1e0e0b688418e7f9 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 16 Mar 2022 12:32:21 -0700 Subject: [PATCH] TrySeq fix (#29112) --- src/core/lib/promise/try_seq.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/core/lib/promise/try_seq.h b/src/core/lib/promise/try_seq.h index be7800aefbb..65520f07daf 100644 --- a/src/core/lib/promise/try_seq.h +++ b/src/core/lib/promise/try_seq.h @@ -93,6 +93,22 @@ struct TrySeqTraitsWithSfinae< return run_next(std::move(prior)); } }; +template <> +struct TrySeqTraitsWithSfinae { + using UnwrappedType = void; + using WrappedType = absl::Status; + template + static auto CallFactory(Next* next, absl::Status&&) + -> decltype(next->Once()) { + return next->Once(); + } + template + static Poll CheckResultAndRunNext(absl::Status prior, + RunNext run_next) { + if (!prior.ok()) return Result(std::move(prior)); + return run_next(std::move(prior)); + } +}; template using TrySeqTraits = TrySeqTraitsWithSfinae;