File tree Expand file tree Collapse file tree 1 file changed +24
-0
lines changed
Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -6,15 +6,20 @@ const logger = {
66
77const MAX_RETRY = 25 ;
88const MAX_RETRY_DELAY = 5000 ;
9+ const MAX_RETRY_AFTER = 60000 ;
910/**
1011 * @type {Partial<DownloaderOptions> }
1112 */
1213const defaultOptions = {
1314 req : {
1415 maxRedirects : 15 ,
16+ // RequestError: Cookie has domain set to a public suffix
17+ // https://developer.mozilla.org/zh-CN/docs/Mozilla/QA/Marionette/Client
18+ ignoreInvalidCookies : true ,
1519 retry : {
1620 decompress : true ,
1721 limit : MAX_RETRY ,
22+ maxRetryAfter : MAX_RETRY_AFTER ,
1823 /**
1924 * if you would like to implement it yourself,
2025 * set error.retryLimitExceeded to 1 or true if
@@ -55,6 +60,25 @@ const defaultOptions = {
5560 error . response && error . response . statusCode === 429 ) {
5661 // add random delay
5762 delay += 3000 + Math . random ( ) * 3000 ;
63+ if ( error . response . headers &&
64+ error . response . headers [ 'retry-after' ] ) {
65+ let retryAfter = parseInt ( error . response . headers [ 'retry-after' ] ) ;
66+ if ( Number . isNaN ( retryAfter ) ) {
67+ retryAfter = Date . parse ( error . response . headers [ 'retry-after' ] ) - Date . now ( ) ;
68+ } else {
69+ retryAfter *= 1000 ;
70+ }
71+ if ( ! isNaN ( retryAfter ) ) {
72+ retryAfter |= 0 ;
73+ if ( retryOptions . maxRetryAfter ) {
74+ if ( retryAfter <= retryOptions . maxRetryAfter ) {
75+ delay = retryAfter ;
76+ }
77+ } else {
78+ delay = retryAfter ;
79+ }
80+ }
81+ }
5882 }
5983 delay |= 0 ;
6084 return delay ;
You can’t perform that action at this time.
0 commit comments