define(
  'ephox.porkbun.Event',

  [
    'ephox.compass.Arr',
    'ephox.scullion.Struct',
    'global!Array'
  ],
  function (Arr, Struct, Array) {

    /** :: ([String]) -> Event */
    return function (fields) {
      var struct = Struct.immutable.apply(null, fields);

      var handlers = [];

      var bind = function (handler) {
        if (handler === undefined) {
          throw 'Event bind error: undefined handler';
        }
        handlers.push(handler);
      };

      var unbind = function(handler) {
        var index = Arr.indexOf(handlers, handler);
        if (index !== -1) {
          handlers.splice(index, 1);
        }
      };

      var mkevent = function (values) {
        try {
          return struct.apply(null, values);
        } catch (e) {
          throw 'Unable to create struct for event. ' + e;
        }
      };

      var trigger = function (/* values */) {
        var values = Array.prototype.slice.call(arguments);
        var event = mkevent(values);
        Arr.each(handlers, function (handler) {
          handler(event);
        });
      };

      return {
        bind: bind,
        unbind: unbind,
        trigger: trigger
      };
    };
  }
);

@@ -87,28 +87,8 @@
 uct'
-,%0A    'global!Array'
 %0A  %5D
@@ -116,15 +116,8 @@
 ruct
-, Array
 ) %7B%0A
@@ -634,23 +634,23 @@
     var 
-mkevent
+trigger
  = funct
@@ -658,317 +658,144 @@
 on (
+/* 
 values
-) %7B%0A        try %7B%0A          return struct.apply(null, values);%0A        %7D catch (e) %7B%0A          throw 'Unable to create struct for event. ' + e;%0A        %7D%0A      %7D;%0A%0A      var trigger = function (/* values */) %7B%0A        var values = Array.prototype.slice.call(arguments);%0A        var event = mkevent(value
+ */) %7B%0A        // scullion does Array prototype slice, we don't need to as well%0A        var event = struct.apply(null, argument
 s);%0A

Remove unnecessary try/catch and array copy in what is likely a very performance critical section of code