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();
  };
}