Implement `customPromiseAll(promises)` that mimics `Promise.all()`.
It should:
- 1
- Take an array of promises and return a new promise.
- 2
- Resolve when all promises resolve, returning an array of results.
- 3
- Reject immediately if any promise rejects.
javascript