return promise from startServer so server can't be used before it's ready