| # | title | topic | type | difficulty |
|---|---|---|---|---|
| 31 | Mixin pattern: compose behaviors | Patterns & Performance | Coding | Medium |
| 32 | Fix the loop capture | Scope & Hoisting | Coding | Medium |
| 33 | Build makeSpy | Testing Lifecycle | Coding | Medium |
| 34 | Land three lines in three different queues | Async & Promises | Coding | Medium |
| 35 |
| Same results, a third of the wall clock |
| Async & Promises |
| Coding |
| Medium |
| 36 | Retry with a delay between attempts | Async & Promises | Coding | Medium |
| 37 | A timeout wrapper that races | Async & Promises | Coding | Medium |
| 38 | Promisify an error-first callback API | Async & Promises | Coding | Medium |
| 39 | allSettled: report everything, fail at nothing | Async & Promises | Coding | Medium |
| 40 | forEach does not wait, and it will not tell you | Async & Promises | Coding | Medium |
| 41 | Debounce: only the last one survives | Async & Promises | Coding | Medium |
| 42 | Throttle: one call per window, no queue | Async & Promises | Coding | Medium |
| 43 | Poll until it is ready, then stop | Async & Promises | Coding | Medium |
| 44 | The same sort, without writing a sort | Sorting Algorithms | Coding | Medium |
| 45 | The same check, in one pass of methods | Algorithms & Recursion | Coding | Medium |
| 46 | The same prefix, without shrinking a guess | Algorithms & Recursion | Coding | Medium |