Why are functions without a return value will be overrided as events?

I haven’t got any problems with this , but there are I think there are two situations that could be inconvinent:

  1. I need some variables in the overrided version.If the function is still a funciton , I could use local variables , but now it’s an event all this variables must be global.

  2. The function I want to override is a protected function and keep the override function still protected. Now it’s an event , it must be public.

That is epics cutting corners aka optimization. IK am sure they have some real reasons for it. We can olny live with it.
Personally ever y time my function gets optimized into evvent i add boolean return value named “wth epic?”.
Not much you can do about it. And i think they have bigger things to implement than some minor inconvenience.

Coming to this topic today, and this was the best thread and information I found on web.

I also do not understand, why functions without return value are forced to be a event. Problem is, even when it does not need a return value, we should be able to handle it like a function, to make sure it is run complete before begin next blue print node. And not an fire-and forget like events.

Also we can use “events” to implement a “event”. So why forcing functions to events when we decide for a function?

So, any reason for this or a way to make functions without return value?