Problem
RpcEventSource.getEvents() (horizon-listener/src/eventSource.ts) falls back to startLedger: this.options.startLedger ?? 0 for the very first cursor-less call. Real Soroban RPC nodes only retain events for a limited recent window (commonly ~24h/17,280 ledgers) and will reject or return an error for a startLedger far outside that window — 0 almost always will be.
Why it matters
A caller who omits startLedger (an easy oversight, since it's optional) gets a confusing RPC-level error instead of a clear message from this package explaining that startLedger should be a recent ledger within the node's retention window.
Suggested approach
Either require startLedger (remove the ?? 0 fallback and make it a compile-time-required option), or throw a clear, package-specific error at construction time when it's omitted, pointing to the retention-window documentation (already covered in README per closed issue #82).
Problem
RpcEventSource.getEvents()(horizon-listener/src/eventSource.ts) falls back tostartLedger: this.options.startLedger ?? 0for the very first cursor-less call. Real Soroban RPC nodes only retain events for a limited recent window (commonly ~24h/17,280 ledgers) and will reject or return an error for astartLedgerfar outside that window —0almost always will be.Why it matters
A caller who omits
startLedger(an easy oversight, since it's optional) gets a confusing RPC-level error instead of a clear message from this package explaining thatstartLedgershould be a recent ledger within the node's retention window.Suggested approach
Either require
startLedger(remove the?? 0fallback and make it a compile-time-required option), or throw a clear, package-specific error at construction time when it's omitted, pointing to the retention-window documentation (already covered in README per closed issue #82).