в gen_server есть обработчик
handle_call(Msg, From, State) ->
PidBa ! { Msg, From },
{ noreply, State };
вот этот From -- это есть указатель на того, кто ожидает.
Т.о. вы в Ба должны каким то образом передать этот From.
Далее Ба может ответить:
gen_server:reply(From, Answer).
Cам по себе супервизор не содержит такого функционала. Вам надо использовать промежуточный процесс и отправлять сообщения ему, и он будет разруливать куда отправлять дальше.
P.S. handle_call вызывается с помощью gen_server:call(Pid, Msg, Timeout).
Более подробно почитать можно тут:
www.erlang.org/doc/man/gen_server.html
а в более популярной форму тут:
learnyousomeerlang.com/clients-and-servers
или по русски в районе этого:
https://github.com/dyp2000/Russian-Armstrong-Erlang