Well, there’s no “this” controller or “another” controller for a model.
You should not think of the relation between a model and a controller like that. They are not coupled tightly.
For instance, User controller is not coupled with User model. There’s no logical relation between them except that the former is using the latter in it. User controller can use any model it needs. For example, User controller can use Profile model along with User model.
"$this" in User model refers to the instance of User model, not User controller.
"$this" in User controller refers to the instance of User controller, not User model.
As for the current issue, you can make a static function in Model A that performs the job. Then you can call it from beforeSave of Model A, and from everywhere you want using the syntax of ModelName::methodName().