Resolve stack overflow issue in copy with callback

Calling `copy` with a callback causes stack overflow due to recursion from wrapping the passed in callback. Rather than wrapping the callback, use the given callback or `noop`.