Performance optimizations:
- not traverse an array twice
- not creating extra objects
- Forcing setTimeout in an already async API is stupid.