public IDisposable RegisterTimer(Grain grain, Func <object, Task> asyncCallback, object state, TimeSpan dueTime, TimeSpan period)
        {
            // Trigger the internal mock so it can be verified
            Mock.Object.RegisterTimer(grain, asyncCallback, state, dueTime, period);

            var timer = new TestTimer(asyncCallback, state);

            _timers.Add(timer);

            return(timer);
        }
        public IDisposable RegisterTimer(Grain grain, Func <object, Task> asyncCallback, object state, TimeSpan dueTime, TimeSpan period)
        {
            if (grain == null)
            {
                throw new ArgumentNullException(nameof(grain));
            }

            Mock.Object.RegisterTimer(grain, asyncCallback, state, dueTime, period);
            var timer = new TestTimer(asyncCallback, state);

            _timers.Add(timer);
            return(timer);
        }