diff --git a/lib/http-protocol.js b/lib/http-protocol.js index 3c4360eb6..5e53a1d95 100644 --- a/lib/http-protocol.js +++ b/lib/http-protocol.js @@ -2,6 +2,17 @@ var queryString = require("qs"); var proto = exports; +var instanceMethods = ["exit", "notify", "pause", "resume"]; + +/** + * Does the requested method expect an instance of BrowserSync + * or raw access to the emitter? + * @param method + * @returns {boolean} + */ +function methodRequiresInstance(method) { + return instanceMethods.indexOf(method) > -1; +} /** * Use BrowserSync options + querystring to create a @@ -48,7 +59,11 @@ proto.middleware = function (bs) { try { - require("./public/" + params.method)(bs.events).apply(null, [params.args]); + var bsOrEmitter = methodRequiresInstance(params.method) + ? bs + : bs.events; + + require("./public/" + params.method)(bsOrEmitter).apply(null, [params.args]); output = [ "Called public API method `.%s()`".replace("%s", params.method),