Essentially: 1. Map over the input values to turn them into something useful for step 2. 2. Do a **single `await`** to do your actual work. **NOT IN A LOOP**. 3. Map over the input values again, for each one returning the relevant data from step 2 that matches this input value. Essentially this is the [same strategy as DataLoader](https://github.com/graphql/dataloader#batch-function) except Grafast steps are more powerful and `Step::execute()` has access to a lot more context.