In `maybe`, would it make sense to check the args passed to the wrapper against the number of args the original function expects? Something like this:
function maybe (fn) {
var expected_number_of_args = fn.length;
return function () {
var i, arg;
for (i = 0; i < expected_number_of_args; ++i) {
arg = arguments[i];
if (arg === null || typeof arg === 'undefined') {
return null;
}
}
return fn.apply(this, arguments)
}
}