Using `let`s like this makes it very hard to follow the flow of the method and hard to follow where things are coming from.

How about passing parameters to the shared example group instead, like here: https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples#passing-parameters-to-a-shared-example-group

```ruby
shared_examples "a failable transaction" do |transaction_method, *transaction_method_arguments|
end
```