Do not obsucre original function.

* Uses `@wraps` to transfer properties from the wrapped function to the wrapper so we can see the function name that failed in wait_for()