then attaches an invocable as a continuation
for an input sender's value completion operation.
upon_error and upon_stopped do the same
for the error and stopped completion operations, respectively,
sending the result of the invocable as a value completion.
The names then, upon_error, and upon_stopped
denote pipeable sender adaptor objects.
Let the expression then-cpo be one of
then, upon_error, or upon_stopped.
For subexpressions sndr and f,
if decltype((sndr)) does not satisfy sender, or
decltype((f)) does not satisfy movable-value,
then-cpo(sndr, f)is ill-formed.
Otherwise,
the expression then-cpo(sndr, f) is expression-equivalent to:
transform_sender(get-domain-early(sndr), make-sender(then-cpo, f, sndr))
except that sndr is evaluated only once.
invokes f or a copy of such
with the value, error, or stopped result datums of sndr
for then, upon_error, and upon_stopped, respectively,
using the result value of f as out_sndr's value completion, and