Great, is this format ok? If so just need to write some tests:
```
iex(1)> :gen_server.call(spawn(fn() -> :gen_server.call(spawn(fn() -> :timer.sleep(100) ; raise(ArgumentError, []) end), :bar) end), :buzz) 
** (exit) exited due to failed call: :buzz
    ** (EXIT) #PID<0.44.0> exited due to failed call: :bar
        ** (EXIT) #PID<0.45.0> exited due to an exception
            ** (ArgumentError) argument error
                :erlang.apply/2
    (stdlib) gen_server.erl:182: :gen_server.call/2
iex(1)> :gen_server.call(spawn(fn() -> :timer.sleep(100) ; raise(ArgumentError, []) end), :bar)                                             
** (exit) exited due to failed call: :bar
    ** (EXIT) #PID<0.47.0> exited due to an exception
        ** (ArgumentError) argument error
            :erlang.apply/2
    (stdlib) gen_server.erl:182: :gen_server.call/2
iex(1)> :gen_server.call(:foo, :bar)                                                           
** (exit) exited due to failed call: :bar
    ** (EXIT) foo exited due to no process
    (stdlib) gen_server.erl:182: :gen_server.call/2
```