Isn't this asyncTestFunction always called with just a single non-array (Function) parameter which probably doesn't have a length property which then by Javascript's bizarro rules causes undefined to == 0?

Not sure if you are trying to check if the function is defined to take a done callback as a parameter, which I think you will have to do some function source pattern matching to check.