Well theres you problem
On your initial link your redirect is http://localhost:3001/auth/twitch/callback and on your code exchange your redirect is http://localhost:3000
So you would of got a body message with your HTTP 4xx code of invalid redirect URI (or words to that effect)
RedirectURI was ignored/not checked when getting a client_credentials token which is why it worked