Today, callbacks can escape their scope, so we try to enforce that the receiver object is explicitly annotated with lifetime requirements. This leads to a lot of base::Unretained() with comments like "this is safe because it never outlives the scope", et cetera. It's also one of the reasons we don't allow capturing lambdas with Callback, since there's a fear that it would be easy to bypass the lifetime safety checks.
CallbackRegion [1] is a proposal to add the ability to create callbacks on the stack, and ensure that they can't be stored / used after the stack scope is destroyed.
[1] https://chromium-review.googlesource.com/c/chromium/src/+/1220629
Comment 1 by dcheng@chromium.org
, Oct 24