diff --git a/reactor.hh b/reactor.hh index 214a933602..3a5099059c 100644 --- a/reactor.hh +++ b/reactor.hh @@ -213,6 +213,9 @@ public: void then(Func&& func, std::enable_if_t, void>::value, void*> = nullptr) { auto state = _state; + if (state->available()) { + return func(std::move(_state->get())); + } state->schedule([fut = std::move(*this), func = std::forward(func)] () mutable { func(fut.get()); }); @@ -223,6 +226,9 @@ public: then(Func&& func, std::enable_if_t>::value, void*> = nullptr) { auto state = _state; + if (state->available()) { + return func(std::move(_state->get())); + } using U = typename std::result_of_t::value_type; promise pr; auto next_fut = pr.get_future();