Repeater.js

The missing constructor for creating safe async iterators

Get Started

Convenient

The Repeater class provides a promise-fluent API for creating async iterators. You can reuse the same constructor to convert event emitters, streams, websockets, or any other callback-based data source into a format which can be read using async/await and for await…of statements.

Safe

Repeaters prevent common mistakes people make when rolling async iterators by hand. By executing lazily, dealing with backpressure, and propagating errors in a predictable manner, repeaters ensure that event listeners are cleaned up and that bottlenecks and deadlocks are discovered quickly.

Powerful

You can use repeaters to implement architectural patterns like cancelable timers, semaphores, and generic pubsub classes. The Repeater class also defines static methods like Repeater.race and Repeater.merge which allow you to use async iterators for reactive programming purposes.