public function stop($taskId, $maxRetries = 10) {
		$task = $this->read(null, $taskId);

		if (!$task) {
			throw new NotFoundException("Task id=$taskId not found!");
		}

		switch ($task[$this->alias]['status']) {
			case TaskType::FINISHED:
			case TaskType::STOPPING: 
			case TaskType::STOPPED: {
					return true;
				}
			case TaskType::UNSTARTED: {
					return (bool)$this->saveField('status', TaskType::STOPPED);
				}
			case TaskType::RUNNING:
					return (bool)$this->saveField('status', TaskType::STOPPING);
				
			case TaskType::DEFFERED: {
					if ($maxRetries <= 0) {
						return (bool)$this->saveField('status', TaskType::STOPPED);
					}
					sleep(1);
					return $this->stop($taskId, --$maxRetries);
				}
			default:
				return false;
		}
	}