@kriskowal makes the case here: https://github.com/kriskowal/gtor/blob/master/cancelation.md
After thinking on this for a while, it's pretty elegant. By re-using the .then interface, they can be converted to promises easily (via Promise.resolve(theTask)), which makes them multicast.
@nathan7 and I were talking about this at NodeConf EU; tagging him in.