diff --git a/bin/now b/bin/now index eeeb411..4865503 100755 --- a/bin/now +++ b/bin/now @@ -137,6 +137,14 @@ async function sync (token) { function handleError (err) { if (403 === err.status) { error('Authentication error. Run `now -L` or `now --login` to log-in again.'); + } else if (429 === err.status) { + if (null != err.retryAfter) { + error('Rate limit exceeded error. Try again in ' + + ms(err.retryAfter * 1000, { long: true }) + + ', or upgrade your account: https://zeit.co/now#pricing'); + } else { + error('Rate limit exceeded error. Please try later.'); + } } else if (err.userError) { error(err.message); } else if (500 === err.status) { diff --git a/lib/index.js b/lib/index.js index 7aa89cc..4724636 100644 --- a/lib/index.js +++ b/lib/index.js @@ -195,5 +195,13 @@ function toRelative (path, base) { function responseError (res) { const err = new Error('Response error'); err.status = res.status; + + if (429 === res.status) { + const retryAfter = res.headers.get('Retry-After'); + if (retryAfter) { + err.retryAfter = parseInt(retryAfter, 10); + } + } + return err; }