def read_backwards(adapter, start_event_id, count = nil)
      stream = adapter
      unless start_event_id.equal?(:head)
        starting_tx = adapter.with_event(start_event_id).first
        starting = starting_tx.events.before(start_event_id)
        stream = stream.where(:ts.lt => starting_tx.ts)
      end
      stream = stream.limit(count) if count&.> 0

      Array(starting) + stream.desc(:ts).map { |t| build_event_entities(t).reverse }.flatten(1)
    end
def read_backwards(adapter, start_event_id, count = nil)
      stream = adapter
      unless start_event_id.equal?(:head)
        starting_tx = adapter.with_event(start_event_id).first
        starting = starting_tx.events.before(start_event_id)
        stream = stream.where(:ts.lt => starting_tx.ts)
      end
      stream = stream.limit(count) if count&.> 0

      Array(starting) + stream.desc(:ts).map { |t| build_event_entities(t).reverse }.flatten(1)
    end
NB: The count parameter is count of transactions and is disabled if nil