When I login to Amazon with Puppeteer, I keep getting a request to fill in Captcha

I have code to login to Amazon with Puppeteer. Everything is working as expected. I'm able to manually put in the Two-Step verification code and captcha when required. I'm saving cookies to user dir, so next time if I'm already logged out and I re-login, I'm not asked for the two setp verification code again, but I am always getting a captcha request. How can I prevent this from happening?

I have the same code with casperjs, and it does not ask for captcha - maybe only the first time I try to log in, but not again. I gave up on this code as Amazon started using React which doesn't play nicely with casperjs.

I already added puppeteer-extra-plugin-stealth and puppeteer-extra-plugin-anonymize-ua to avoid bot detection. I tried using the same code on a different server. I tried sleeping between clicks and typing.

Everything I tried, it's still asking for Captcha.

Not sure if relevant, but I'm running both casperjs and puppeteer through php, using https://github.com/alwex/php-casperjs and https://github.com/nesk/puphpeteer respectively.

$emailInput = "input#ap_email";
        $passwordInput = "input#ap_password";
        $signinBtn = "input#signInSubmit";

        $email = $account->getWebsiteUserName();
        $password = $account->getWebsitePassword();
        sleep(3);
        $page->tryCatch->click($emailInput, 'delay' => 500]); // to clear the input
        sleep(1);
        $page->tryCatch->type($emailInput, $email, ['delay' => 500]);
        sleep(1);
        $page->tryCatch->type($passwordInput, $password, ['delay' => 500]);
        sleep(1);
        $callback = JsFunction::createWithParameters(['element'])
                ->body("console.log('is checked? ' + element.checked);
                                if (element.checked == false){
                                    console.log('Remember me unchecked. check it now!');
                                    element.click('input[name=\"rememberMe\"]');
                                } else {
                                    console.log('Remember me already checked');
                                }");

        $page->tryCatch->querySelectorEval('input[name="rememberMe"]', $callback);
        sleep(3);
        $page->tryCatch->click($signinBtn, ['delay' => 500]);