@@ -69,8 +69,8 @@ function mapAssetFileUrlToCdn(asset) {
69
69
* Creates a promise that resolves two second after its creation.
70
70
* @return {Promise }
71
71
*/
72
- function threeSecondDelay ( ) {
73
- return new Promise ( resolve => setTimeout ( resolve , 3000 ) ) ;
72
+ function oneSecondDelay ( ) {
73
+ return new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
74
74
}
75
75
76
76
/**
@@ -94,6 +94,10 @@ class ApiService {
94
94
* @return {Promise }
95
95
*/
96
96
async fetch ( endpoint , query ) {
97
+ // Contentful API rate limits, which are 78 requests within 1 second
98
+ // we await 14ms before each request to make sure we don't break this limitation
99
+ await new Promise ( resolve => setTimeout ( resolve , 14 ) ) ;
100
+ // fire calls to Contentful API
97
101
let url = `${ this . private . baseUrl } ${ endpoint } ` ;
98
102
if ( query ) url += `?${ qs . stringify ( query ) } ` ;
99
103
let res ;
@@ -108,7 +112,7 @@ class ApiService {
108
112
} ) ;
109
113
/* 429 = "Too Many Requests" */
110
114
if ( res . status !== 429 ) break ;
111
- await threeSecondDelay ( ) ;
115
+ await oneSecondDelay ( ) ;
112
116
/* eslint-enable no-await-in-loop */
113
117
}
114
118
if ( ! res . ok ) throw new Error ( res . statusText ) ;
0 commit comments