Yeah, the implementation in the repo would be something like:

```elixir
def rollback!(term // nil) do
  adapter.rollback!(__MODULE__, term)
end

And in the adapter:

```elixir
def rollback!(repo, term // nil) do
  throw { :ecto_rollback, repo, term }
end
```

We should probably add rollback! to the adapter transaction API too!