Iterate and map recursively into an object. Return a promise object with a standard then interface created by Q. The depth and data types can be controlled by the iterator.
When encounters an array object, the returned value is an object use the indices of the array as its keys in String.
Note, that module q is required to handle the async quenue and create promises.
Arguments