handle promises in the arguments

allow denodified functions to take promises in the arguments without killing the performance of cases without promises.