code: function (reqContext, name, args) {
      return BPromise.resolve()
          .bind(this)
          .then(function () {
              var method = this._methods[name];
              if (!method) {
                  throw new MWError(404, "Method not found");
              }
              var context = R.merge(method.context, reqContext);
              return method.fn.apply(context, args);
          });
  }
docs: /*
  By convention, a method can either:
  - throw
  - return a value
  - return a thenable