Timer that can interact with context.object? i'd like to create a timer that can interract with the active object.
every time the active object is not the same as the object in my pointer prop it automatically replace pointer object with the active object. 

i don't understand why they restric us doing this kind of things. 
how can i achieve something similar ? 

class SCATTER_OT_terrain_is_active(bpy.types.Operator):
    bl_idname = "scatter.terrain_is_active"
    bl_label = ""
    bl_description = "Constantly use the active object as Terrain"

    def execute(self, context):
        addon_prefs = bpy.context.preferences.addons[__name__].preferences
        C_Slots     = bpy.context.scene.C_Slots_settings

        addon_prefs.active_is_terrain = not addon_prefs.active_is_terrain

        if addon_prefs.active_is_terrain == True:
            print("start timer")
            bpy.app.timers.register(check_active)
        else: print("stop timer")
        return {'FINISHED'}

def check_active():
    addon_prefs = context.preferences.addons[__name__].preferences
    C_Slots     = bpy.context.scene.C_Slots_settings
    Active      = bpy.context.object

    print("check")
    if addon_prefs.active_is_terrain == False:
        return None

    if Active != C_Slots.Terrain_pointer:
        C_Slots.Terrain_pointer = Active
    return 0.65
with a handler it may work

import bpy, os

ao = None

def h(s):
    # just for testing, normally i won't use global
    global ao
    o = bpy.context.active_object
    if(ao != o):
        ao = o
        print(ao)
    if ao.name == "Cam Small":
        return None

bpy.app.handlers.depsgraph_update_post.append(h)


but that doesn't really respond to the goal of the question