protected function execPromise($cmdPromise, $description)
    {
        return $this->beginCommandLazy($description)->thenLazy(
            function($time) use ($cmdPromise) {
                if (is_array($cmdPromise)) {
                    $cmdPromise = allInOrder($cmdPromise);
                }
                return $cmdPromise->always(function() use ($time) {
                    return $this->endCommand($time);
                });
            }
        );
    }