The type sender-awaitable<Sndr, Promise> is equivalent to:
namespace std::execution {
template<class Sndr, class Promise>
class sender-awaitable {
struct unit {};
using value-type =
single-sender-value-type<Sndr, env_of_t<Promise>>;
using result-type =
conditional_t<is_void_v<value-type>, unit, value-type>;
struct awaitable-receiver;
variant<monostate, result-type, exception_ptr> result{};
connect_result_t<Sndr, awaitable-receiver> state;
public:
sender-awaitable(Sndr&& sndr, Promise& p);
static constexpr bool await_ready() noexcept { return false; }
void await_suspend(coroutine_handle<Promise>) noexcept { start(state); }
value-type await_resume();
};
}