code: function once (fn) {
    var called = false;
    return function () {
      var args = [], len = arguments.length;
      while ( len-- ) args[ len ] = arguments[ len ];
  
      if (called) { return }
      called = true;
      return fn.apply(this, args)
    }
  }
docs: in Webpack 2, require.ensure now also returns a Promise so the resolve/reject functions may get called an extra time if the user uses an arrow function shorthand that happens to return that Promise.