uses different caller (not the js caller)