Several things might cause it. Are there other events that destroy the object? Does it use the “destroy outside screen” behaviour?
Other than that the “only execute once” option can also interfere with your event. If the event has that it wont remove a second laser if it is outside the screen simultaneously. You can also try changing your event to “for every object laser shot repeat”. This will make sure the event is triggered for each laser shot object. And if it still doesn’t work you can also switch to a lifetime system, where each shot gets assigned a lifetime after being created, which is then counted down over time and removes the shot once it reaches zero. I think this would be more economically too, because you don’t have to do all these different position test for each of your shots. But that’s only an option if you don’t absolutely need to destroy shot as soon as they are outside the screen.