I find callType a bit confusing. Could it be better to have a safe `trigger` function, and a safe `call` function instead? It will probably make the code easier to read.