'use strict'; const Promise = require("bluebird"); const net = require("net"); const defaultValue = require("default-value"); module.exports = function waitForServer(port, options = {}) { return new Promise((resolve, reject) => { function check() { let sock = new net.Socket(); sock.setTimeout(defaultValue(options.timeout, 50)); sock .on("connect", () => { resolve(); sock.destroy(); }) .on("timeout", check) .on("error", check) .connect(port); } return check(); }); };