From f865a35ba9274dc954dc9bbbe5652b915da97a9f Mon Sep 17 00:00:00 2001 From: Golo Roden Date: Mon, 19 Oct 2026 10:15:47 +0200 Subject: [PATCH 1/2] chore: Say in the README that closing the client ends a write that was sent with an OutcomeUnknownException. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01QykegdHe7vhHMBN3kWxgfH --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6be2672..8104837 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ try (var client = new Client(baseUrl, apiToken)) { } ``` -Closing the client ends everything it is doing at once: requests that are running and streams that are open end with a `CancellationException`, as if they had been aborted. Every request afterwards throws an `IllegalStateException`. +Closing the client ends everything it is doing at once: requests that are running and streams that are open end with a `CancellationException`, as if they had been aborted. A write that was sent already ends with an `OutcomeUnknownException` instead, whose cause is the `CancellationException`, since the server may have stored it nonetheless, see [Knowing Whether a Write Was Stored](#knowing-whether-a-write-was-stored). Every request afterwards throws an `IllegalStateException`. ### Writing Events @@ -741,7 +741,7 @@ If verifying an event fails, the client throws a `HashVerificationFailedExceptio If a request receives nothing from the server for the [stall timeout](#configuring-the-stall-timeout), 30 seconds by default, e.g. because the server can not be reached, or because a proxy keeps the connection open but no longer passes anything on, the client closes the connection, and the request ends with a `ConnectionStalledException`. -If a request is aborted, because its thread is interrupted, because its stream is closed from somewhere else, or because the client is closed, it ends with a `CancellationException`. +If a request is aborted, because its thread is interrupted, because its stream is closed from somewhere else, or because the client is closed, it ends with a `CancellationException`. A write that was sent already ends with an `OutcomeUnknownException` instead, whose cause is the `CancellationException`, see [Knowing Whether a Write Was Stored](#knowing-whether-a-write-was-stored). If the server ends a stream before it is complete, e.g. because of a failure it can not report within the stream, the stream ends with an `EventSourcingDbException`. This includes observing events, which never ends on its own. From d66faaf39499661d3525163d58ed8c88458c7f1e Mon Sep 17 00:00:00 2001 From: Golo Roden Date: Mon, 19 Oct 2026 10:28:31 +0200 Subject: [PATCH 2/2] chore: Say in the README that closing the client ends a write that the client has started to send with an OutcomeUnknownException. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01QykegdHe7vhHMBN3kWxgfH --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8104837..a1bcf48 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ try (var client = new Client(baseUrl, apiToken)) { } ``` -Closing the client ends everything it is doing at once: requests that are running and streams that are open end with a `CancellationException`, as if they had been aborted. A write that was sent already ends with an `OutcomeUnknownException` instead, whose cause is the `CancellationException`, since the server may have stored it nonetheless, see [Knowing Whether a Write Was Stored](#knowing-whether-a-write-was-stored). Every request afterwards throws an `IllegalStateException`. +Closing the client ends everything it is doing at once: requests that are running and streams that are open end with a `CancellationException`, as if they had been aborted. A write that the client has started to send ends with an `OutcomeUnknownException` instead, whose cause is the `CancellationException`, since the server may have stored it nevertheless, see [Knowing Whether a Write Was Stored](#knowing-whether-a-write-was-stored). Every request afterwards throws an `IllegalStateException`. ### Writing Events @@ -741,7 +741,7 @@ If verifying an event fails, the client throws a `HashVerificationFailedExceptio If a request receives nothing from the server for the [stall timeout](#configuring-the-stall-timeout), 30 seconds by default, e.g. because the server can not be reached, or because a proxy keeps the connection open but no longer passes anything on, the client closes the connection, and the request ends with a `ConnectionStalledException`. -If a request is aborted, because its thread is interrupted, because its stream is closed from somewhere else, or because the client is closed, it ends with a `CancellationException`. A write that was sent already ends with an `OutcomeUnknownException` instead, whose cause is the `CancellationException`, see [Knowing Whether a Write Was Stored](#knowing-whether-a-write-was-stored). +If a request is aborted, because its thread is interrupted, because its stream is closed from somewhere else, or because the client is closed, it ends with a `CancellationException`. A write that the client has started to send ends with an `OutcomeUnknownException` instead, whose cause is the `CancellationException`, see [Knowing Whether a Write Was Stored](#knowing-whether-a-write-was-stored). If the server ends a stream before it is complete, e.g. because of a failure it can not report within the stream, the stream ends with an `EventSourcingDbException`. This includes observing events, which never ends on its own.