(i, prom)
| 166 | |
| 167 | # needs to be a separate function for creating a closure in a loop |
| 168 | def register_promise(i, prom): |
| 169 | prom_completed = False |
| 170 | |
| 171 | def promise_done(success, res): |
| 172 | nonlocal prom_completed, results, num_completed |
| 173 | if prom_completed or cbs.done: |
| 174 | return |
| 175 | prom_completed = True |
| 176 | if success: |
| 177 | results[i] = res |
| 178 | num_completed += 1 |
| 179 | if num_completed == num_proms: |
| 180 | result = tuple(results) |
| 181 | del results |
| 182 | cbs.resolve(result) |
| 183 | else: |
| 184 | del results |
| 185 | cbs.reject(res) |
| 186 | |
| 187 | _resolve(prom).then( |
| 188 | lambda res: promise_done(True, res), |
| 189 | lambda err: promise_done(False, err), |
| 190 | ) |
| 191 | |
| 192 | for i, prom in enumerate(proms): |
| 193 | register_promise(i, prom) |
no test coverage detected