@rphillips I think it should still be `type(name)`. This is for the situation where only on parameter, i.e. a `function` is passed in, in which case the `func` is actually in the place of the name.

Another situation is: `type(conf)=='function' and type(name) == 'object'`: only `name` is missing, in which case the rest two parameters shift left; 

This is the same logic used in `node-tap`: https://github.com/isaacs/node-tap/blob/master/lib/tap-harness.js#L161 I feel it's a bit confusing too. Do you all think we should simply make it require three parameters instead of variable number of parameters?