nicer pattern: the context manager waits for map() completion