public function executeOnce(\Closure $task)
    {
        $isBlocked = $this->checkedLock();
        $error = null;
        try {
            if (! $isBlocked) {
                call_user_func($task);

            }
        } catch (\Exception $e) {
            $error = $e;

        }
        $this->unlock();
        if (! is_null($error)) {
            throw $error;

        }
    }