`complete(srv, done); ` should be called in the fail case here too, so that if the test fails it doesn't hang.

So this would become:

    getFavicon(url).then(function (url) {
      assert.equal(url, favicon, 'Callback returns null');
    }, function (err) {
      assert.fail('Reject should not be called');
    }).then(complete.bind(null, srv, done));

Similar issue for the others tests in this file.