Ok I think I got it. It’s the SetTimer that fills the handle, not just constructing it. (It is constructed with an invalid handle of uint64 0).
@_brunocoimbra thanks for your response. I was saving the handle in a sub-struct by ref (during Effects.Add), but the problem was I was saving it before filling it with SetTimer, therefore always saving an invalid handle.