pub type ExchangeSink = Arc<dyn Fn(&ExchangeRecord) -> Result<(), String> + Send + Sync>;
Receives each exchange record; an error is counted, never propagated.
pub struct ExchangeSink { /* private fields */ }