stop-when fuses an additional stop token t
into a sender so that, upon connecting to a receiver r,
the resulting operation state receives stop requests from both
t and the token returned from get_stop_token(get_env(r)).
If decltype((sndr)) does not satisfy sender, or
remove_cvref_t<decltype((token))>
does not satisfy stoppable_token,
then stop-when(sndr, token) is ill-formed.
If the type of rtoken models unstoppable_token then
the effects of connecting osndr to r
are equivalent to
connect(write_env(sndr, prop(get_stop_token, token)), r).
Otherwise,
the effects of connecting osndr to r
are equivalent to
connect(write_env(sndr, prop(get_stop_token, stoken)), r)
where stoken is an object of
an exposition-only type stoken-t such that:
For an object fn of type Fn
constructed from a value, init, of type Init,
registering fn using
stoken-t::callback_type<Fn>(stoken, init)
results in an invocation of fn when
a callback registered with token or rtoken would be invoked.