Asynchronous Recursive Functions in JS

I dislike having to deal with JSON structures with many levels of nesting because of the difficulty that comes with traversing all values. In cases where one starts with an unknown level of nesting, recursive modification makes sense. Modifying nested JS hashes is fairly straightforward with synchronous operations but it can get messy if the modifier operation is asynchronous.

This snippet will enable you to apply asynchronous operations for a nested JSON object using the Async library.
Works on both client/server with ES6 support.