start + pull: simulated async resource

start() opens a simulated async resource (like a WebSocket / DB connection). It takes 1 second. Then pull() reads one "record" per call.

Consume

read() before start completes → waits. After start resolves, each read triggers pull which awaits the resource.then() — simulating a real async lookup.

Log