execute_every with a period of 0 causes infinite loop
Looking at process_timeout, the code looks like this:
while self.delayed_commands: command = self.delayed_commands if not command.due(): break command.function(*command.arguments) if isinstance(command, PeriodicCommand): self._schedule_command(command.next()) del self.delayed_commands
If one of the delayed_commands is a PeriodicCommand with delay of 0 (as created by execute_every with period of 0), the _schedule_command will always re-add the command immediately after running it, and it will satisfy the command.due() on the subsequent iteration, causing an infinite loop.
At the very least, the IRC client should raise an error if one attempts to create such a command. Even better would be to support periodic commands with a delay of 0 (which one would want to run every timeout, but only once per).