There's a bunch of problems with that improvement:
1. It changes the type of error that is thrown by dry-types. It broke rom's specs (though I would argue it wasn't declared as part of the public interface and rom shouldn't have committed to a specific error)
2. It refers to dry-types explicitly though it wasn't a hard dependency. The following example fails with `uninitialized constant Dry::Types`:
```
class Foo
extend Dry::Initializer
param :foo, type: proc { Integer(_1) }
end
Foo.new('abc')
```
I decided we should ship 3.1.1 without this change and think the whole thing through. Probably, we should add a dry-types extension to dry-initializer that improves errors but requires explicit activation.