public function getVideos(array $options = [])
    {
        $deferred = new Deferred();

        $options = Options::buildOptions(Options::$defaultOptions, $options, $this->tidal);

        $this->http->get(
            Options::replace(Endpoints::ARTIST_VIDEOS, ['id' => $this->id]).$options
        )->then(function ($response) use ($deferred) {
            $videos = new Collection();

            foreach ($response['items'] as $video) {
                $videos->push(new Video(
                    $this->http,
                    $this->tidal,
                    $video
                ));
            }

            $deferred->resolve($videos);
        }, function ($e) use ($deferred) {
            $deferred->reject($e);
        });

        return $deferred->promise();
    }