400 bad request from POST request

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