-type resource() :: atom().
-spec spawn(resource(), function() | {module(), atom(), [term()]}) -> {ok, pid()} | {error, overload}.
-spec spawn(resource(), module(), atom(), [term()]) -> {ok, pid()} | {error, overload}.
-spec start_child(resource(), module(), atom(), term()) -> {ok, pid()} | {ok, pid(), term()} | {ok, undefined} | {error, overload} | {error, term()}.
-spec which_children(resource()) -> [pid()].