# `FeedReader.Session`

A one-pass event stream over a feed.

Remote sessions own the temporary source used by the event stream and must
be closed by callers in an `after` block when enumeration is not completed.
`FeedReader.close/1` is idempotent. Local sessions have no HTTP metadata and
therefore set `fetch` to `nil`; their caller-owned source is never removed.

# `event`

```elixir
@type event() ::
  {:feed, FeedReader.Feed.t()} | {:item, FeedReader.Item.t()} | {:error, term()}
```

# `t`

```elixir
@type t() :: %FeedReader.Session{
  events: Enumerable.t(),
  fetch: FeedReader.Fetch.t() | nil,
  resource: map() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
