I don't think there's anything we need to do when we detect a dupe (other than throw an exception) but I will separate that out and create a special TaskExistsException that bubbles up from TaskStorages. That'll let us separate duplicate tasks from arbitrary other exceptions if we ever want to.