Trabalho assíncrono do loop for no transferidor

Quando executo o seguinte código usando o transferidor, ele funciona. Estou passando o json aninhado para o loop for. Por trabalhar de forma assíncrona no loop for, imprime todos os valores da variável ie atinge o último valor, por isso sempre acessa o último par de nome de usuário e senha. Como posso resolver este problema?

var data = require('.../testdata.json');

describe('homepage Test', function() {

  it('candidate login', function() {
    browser.driver.get('https://abcxyz.com');
    for (i in data.testdata) {
      element(by.id('tool_btn3')).click();
      console.log(i);
      browser.getTitle().then(function(title) {
        console.log("Title: " + title)
        if (title === "<page title>") {
          browser.driver.sleep(3000);
          element(by.id('email_input')).sendKeys(data.testdata[i].username);
          element(by.id('pwd_input')).sendKeys(data.testdata[i].password);
          element(by.xpath('//*[@id="signIn_btn"]/div[2]')).click();
          browser.sleep(3000);
          element(by.id('setting_img')).click();
          browser.sleep(2000);
          element(by.id('logout_div')).click().then(function() {
            console.log('success');
          });
        } else {
          console.log("problem");
        }
      });
    }
  });
});

questionAnswers(1)

yourAnswerToTheQuestion