Let connect-awaitable-promise be the following exposition-only class:
namespace std::execution {
  struct connect-awaitable-promise : with-await-transform<connect-awaitable-promise> {
    connect-awaitable-promise(DS&, DR& rcvr) noexcept : rcvr(rcvr) {}
    suspend_always initial_suspend() noexcept { return {}; }
    [[noreturn]] suspend_always final_suspend() noexcept { terminate(); }
    [[noreturn]] void unhandled_exception() noexcept { terminate(); }
    [[noreturn]] void return_void() noexcept { terminate(); }
    coroutine_handle<> unhandled_stopped() noexcept {
      set_stopped(std::move(rcvr));
      return noop_coroutine();
    }
    operation-state-task get_return_object() noexcept {
      return operation-state-task{
        coroutine_handle<connect-awaitable-promise>::from_promise(*this)};
    }
    env_of_t<DR> get_env() const noexcept {
      return execution::get_env(rcvr);
    }
  private:
    DR& rcvr;                           
  };
}