Invoking functions via Function.prototype.apply() and .call() is less performant than a regular function call, and makes code harder to read. Before ES6 there was no other way of writing a function with variadic arguments, but since we now have the spread operator, we can use that as the better alternative. https://gitlab.gnome.org/GNOME/gnome-shell-extensions/merge_requests/91