Meta Engineer?

This is available as Keyset\map_async in the www repository.

Returns a new keyset where the value is the result of calling the given async function on the original values in the given traversable

namespace HH\Lib\Keyset;

function map_async<Tv, Tk as arraykey>(
  Traversable<Tv> $traversable,
  (function(Tv): Awaitable<Tk>) $async_func,
): Awaitable<keyset<Tk>>;

Time complexity: O(n * f), where f is the complexity of the synchronous portions of $async_func Space complexity: O(n)

The IO operations for each of calls to $async_func will happen in parallel.