public function one($db = null)
    {
        if ($this->emulateExecution) {
            return reject(false);
        }

        return $this->createCommand($db)->thenLazy(
            function(CommandInterface $command) {
                return $command->queryOne();
            }
        )->thenLazy(
            function($row) {
                if ($row !== false) {
                    return $this->populate([$row]);
                }
                return reject(null);
            }
        )->thenLazy(
            function($models) {
                return reset($models) ?: reject(null);
            }
        );
    }