user may override toString method on a function. Use Function.prototype.toString.call to lessen risk.