avoid throwing in .publish()

already have a callback so might as well use that instead of try/catching every call