Project Challenge

Release Health Dashboard

Async HandlingAdvanced

Aggregate multiple async release checks into one stable health summary with blockers and next actions.

This Challenge

Category
Async Handling
Linked topic
Promises
Estimated time
45 minutes
Promise orchestrationResult aggregationFailure handling

Async Handling

Challenge brief

A release manager needs a health dashboard that runs several async checks and reports whether deployment can proceed.

Target outcome

Create one async function that processes all checks, separates blockers, and returns a release decision summary.

Deliverables
Await all checks before calculating the final summary.
Collect blockers from failed checks only.
Return passed and failed counts for dashboard metrics.
Expose one clear recommendation for the release manager.
Acceptance checklist
The final object includes passedCount, failedCount, blockers, and recommendation.
Failed checks are preserved in the blockers list with service name and reason.
The recommendation changes based on failures.
The flow stays readable instead of nesting promise chains deeply.

Project Workspace

Build the challenge in one focused editor

Use the starter code, run the checks, and compare your structure with the solution notes only after you have attempted the project yourself.

Async Handling45 minAdvanced
Project editor

Build the challenge in JavaScript or TypeScript, then run the current workspace checks against the compiled output.

17 lines
JavaScript mode runs directly in the current project runner.
Workspace checks
Release has blockers
Check

Failures should surface in the blockers list with a hold recommendation.

Input: [[{"service":"API","passed":true},{"service":"Payments","passed":false,"reason":"Webhook retries failing"},{"service":"Search","passed":false,"reason":"Index migration still running"}]]
Expected: {"passedCount":1,"failedCount":2,"blockers":[{"service":"Payments","reason":"Webhook retries failing"},{"service":"Search","reason":"Index migration still running"}],"recommendation":"Hold the release and clear the blockers first."}
Release is healthy
Check

All passing checks should produce a green-light recommendation.

Input: [[{"service":"API","passed":true},{"service":"Search","passed":true}]]
Expected: {"passedCount":2,"failedCount":0,"blockers":[],"recommendation":"Release is healthy. You can move forward."}
Run output
Run the project to inspect automatic checks and console output.
Project review

Inspect the project solution like a senior reviewer would, with correctness, structure, and maintainability feedback.

Run the review after or before the code runner. If test results are available, the review will factor them into the feedback as well.