getContext($statusCode); self::assertSame($expected, $strategy->shouldRetry($context, $response, null)); } public static function provideRetries(): iterable { yield [false, 200, null]; yield [true, 429, null]; yield [null, 400, null]; yield [false, 400, 'this is invalid']; yield [false, 400, '{"__type": "RandomError"}']; yield [true, 400, '{"__type": "RequestLimitExceeded"}']; } private function getContext(int $statusCode): AsyncContext { $passthru = null; $info = [ 'http_code' => $statusCode, ]; $response = new MockResponse('', $info); return new AsyncContext($passthru, new MockHttpClient(), $response, $info, null, 0); } }