function deepMapAndAwaitAll(_x, _x2) {
	  return _deepMapAndAwaitAll.apply(this, arguments);
	}
Apply an async mapping function to a nested structure in a recursive manner.

This first creates a nested structure of Promises, and then awaits all of
those, resulting in a single Promise for a resolved nested structure.

The result of the mapping is an object with the same nested structure (i.e.,
of arrays and dicts) as the input, except that some subtrees are replaced,
according to the results of the mapping function.

Mappings are memoized.  Thus, if the nested structure contains the same
object in multiple positions, the output will contain the same mapped object
in those positions.  Cycles are not supported, however.

@param input: The object to which to apply the mapping function.
@param mapFn: A function that expects a single node of the object tree, and
  returns a `DeepMapAsyncResult`.  The `DeepMapAsyncResult` either provides
  a `Promise` for a replacement value for that node (i.e., replacing the
  subtree), or indicates that the node should be processed recursively.  Note
  that the decision whether or not to recurse must be made immediately; only
  the mapped value may be promised.