Throttle values until the command can again be executed.

This PR changes `InvokeCommand` to throttle produced values until the command can again be executed. Previously we would miss them and the values would never reach the command.
Move scheduler to throttle