(function(previousMethods){

if (typeof previousMethods === 'undefined') {
  // Defining previously that object allows you to use that plugin even if you have overridden L.map
  previousMethods = {
    getTiledPixelBounds: L.GridLayer.prototype._getTiledPixelBounds
  };
}

L.GridLayer.include({

  _getTiledPixelBounds : function(center, zoom, tileZoom) {
    var pixelBounds = previousMethods.getTiledPixelBounds.call(this, center, zoom, tileZoom);

    // Default is to buffer one tiles beyond the pixel bounds (edgeBufferTiles = 1).
    var edgeBufferTiles = this.options.edgeBufferTiles || 1;

    if (edgeBufferTiles > 0) {
      var pixelEdgeBuffer = edgeBufferTiles * this.options.tileSize;
      pixelBounds = new L.Bounds(pixelBounds.min.subtract([pixelEdgeBuffer, pixelEdgeBuffer]), pixelBounds.max.add([pixelEdgeBuffer, pixelEdgeBuffer]));
    }

    return pixelBounds;
  }
});

})(window.leafletEdgeBufferPreviousMethods);

(function (factory, window) {
  // define an AMD module that relies on 'leaflet'
  if (typeof define === 'function' && define.amd) {
    define(['leaflet'], factory);

  // define a Common JS module that relies on 'leaflet'
  } else if (typeof exports === 'object') {
    module.exports = factory(require('leaflet'));
  }

  // attach your plugin to the global 'L' variable
  if (typeof window !== 'undefined' && window.L) {
    window.L.EdgeBuffer = factory(L);
  }
}(function (L) {
  var EdgeBuffer = {
    previousMethods: {
      getTiledPixelBounds: L.GridLayer.prototype._getTiledPixelBounds
    }
  };

  L.GridLayer.include({

    _getTiledPixelBounds : function(center, zoom, tileZoom) {
      var pixelBounds = L.EdgeBuffer.previousMethods.getTiledPixelBounds.call(this, center, zoom, tileZoom);

      // Default is to buffer one tiles beyond the pixel bounds (edgeBufferTiles = 1).
      var edgeBufferTiles = 1;
      if ((this.options.edgeBufferTiles !== undefined) && (this.options.edgeBufferTiles !== null)) {
        edgeBufferTiles = this.options.edgeBufferTiles;
      }

      if (edgeBufferTiles > 0) {
        var pixelEdgeBuffer = edgeBufferTiles * this.options.tileSize;
        pixelBounds = new L.Bounds(pixelBounds.min.subtract([pixelEdgeBuffer, pixelEdgeBuffer]), pixelBounds.max.add([pixelEdgeBuffer, pixelEdgeBuffer]));
      }
      return pixelBounds;
    }
  });

  return EdgeBuffer;
}, window));

Use plugin loader template recommended by leaflet. Should fix issue #2.