fetch
fetch( conn, String.t(), m, read: (conn, String.t(), list() -> Result.t(reason, [EventStore.RecordedEvent.t()])), project: ([EventStore.RecordedEvent.t()], m -> projection) ) :: Result.t(reason, projection) when conn: module(), m: module(), reason: term(), projection: any()