If you’re making an browser extension, you shouldn’t be using the Client Credentials OAuth flow as that exposes your client secret to anyone using the extension. You should either use a backend server, or require the user of the extension go through the implicit auth flow.
The API uses caching, you shouldn’t request the same data more than once every minute.
What do you mean it’s ‘empty’? Your getStreamData is a little hard to read but appears to be sending either null (for an offline stream), or if the stream is live it should return the stream object, so I’m not sure what you mean by ‘empty’.