The emitter currently isn't fed with new values. The new values could be provided in multiple ways: from JS, from C++ CommRustModule, or from Rust.
The C++ layer exposes an API that allows setting the token, but we need to make sure that emitter is also aware about this change. Currently, the only place that consumes the events will be AccessTokenHandler, which then updates Redux, but directly updating Redux when calling CommRustModule won't be maintainable - there could be more emitter consumers in the future.
We can also consider calling emitter directly from Rust, but it also has some maintainability cost because the JS logic can decide how to handle the result.
So overall, this solution makes data flow simple and achieves what is needed. There are some other options, but introducing them should also result in removing setCommServicesAuthMetadata from JS.