Something like this:
```
    Proc.new do |recv, *args|
      raise ArgumentError, "no receiver given" unless recv
      recv.__send__(sym, *args)
    end
```