/// <inheritdoc/>
        Task IDurableEntityClient.SignalEntityAsync <TEntityInterface>(EntityId entityId, DateTime scheduledTimeUtc, Action <TEntityInterface> operation)
        {
            var proxyContext = new EntityClientProxy(this, scheduledTimeUtc);
            var proxy        = EntityProxyFactory.Create <TEntityInterface>(proxyContext, entityId);

            operation(proxy);

            if (proxyContext.SignalTask == null)
            {
                throw new InvalidOperationException("The operation action must perform an operation on the entity");
            }

            return(proxyContext.SignalTask);
        }
        /// <summary>
        /// Signals an entity to perform an operation.
        /// </summary>
        /// <typeparam name="TEntityInterface">Entity interface.</typeparam>
        /// <param name="client">orchestration client.</param>
        /// <param name="entityId">The target entity.</param>
        /// <param name="operation">A delegate that performs the desired operation on the entity.</param>
        /// <returns>A task that completes when the message has been reliably enqueued.</returns>
        public static Task SignalEntityAsync <TEntityInterface>(this IDurableEntityClient client, EntityId entityId, Action <TEntityInterface> operation)
        {
            var proxyContext = new EntityClientProxy(client);
            var proxy        = EntityProxyFactory.Create <TEntityInterface>(proxyContext, entityId);

            operation(proxy);

            if (proxyContext.SignalTask == null)
            {
                throw new InvalidOperationException("The operation action must perform an operation on the entity");
            }

            return(proxyContext.SignalTask);
        }