I need a flush() operation in the timeline client. Knowing the lifecycle of my app, I do explicitly want to flush up events at certain points (app start event, app end, without relying on an async flush client)
Right now, in tests, the time it takes for an event to propagate is: flush delay + scan delay, you are looking at 2 seconds minimum, per test case, with less deterministic outcomes.
In production, those big app lifecycle events are so important my client code currently explicitly flushes my own event queue, and expects them to reach the destination
With the filesystem writer, I've lost those durability guarantees.
Implementing Flushable.flush() would let my app tell the timeline client to write; it'd be a no-op on the http client, but for the filesystem writer (or any other async writer), it'd be expected to force a write to the durable medium.