Cloning arguments doesn't seem necessary here since you're just immediately passing it to `apply()`.  Actually, maybe not necessary in the success case either, since the recursive call into `chainHelper()` doesn't modify the args array you pass it (and even if it did, the success code isn't going to use it again anyway).