public function getStreamUrl()
    {
        $deferred = new Deferred();

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

        $this->http->get(
            Options::replace(Endpoints::VIDEO_STREAM_URL, ['id' => $this->id]).$options
        )->then(function ($response) use ($deferred) {
            $deferred->resolve($response['url']);
        }, function ($e) use ($deferred) {
            $deferred->reject($e);
        });

        return $deferred->promise();
    }