feat: npm install retries 3 times before giving up