Skip to content

Instantly share code, notes, and snippets.

@mzahor
Created March 25, 2020 11:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mzahor/ad7f6e9314050fe5e44ef214fb667799 to your computer and use it in GitHub Desktop.
Save mzahor/ad7f6e9314050fe5e44ef214fb667799 to your computer and use it in GitHub Desktop.
Wait for url to become available. No dependencies.
#!/usr/bin/env node
const http = require('http');
let timeoutFired = false;
const urlReady = new Promise((resolve, reject) => {
const timeout = setTimeout(() => {
timeoutFired = true;
reject(new Error('Timeout'));
}, 60000);
getUrl(timeout, resolve, reject);
});
function getUrl(timeoutId, resolve, reject) {
const url = process.argv[2];
http.get(url, (resp) => {
resp.on('data', () => {
clearTimeout(timeoutId);
resolve();
});
}).on('error', (err) => {
if (timeoutFired) {
reject();
return;
}
setTimeout(() => getUrl(timeoutId, resolve, reject), 1000);
});
}
urlReady.catch((err) => {
console.log(err);
process.exit(1);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment