util.async: New library to provide support around coroutine-based non-blocking functions