I am assuming that browser.wait should be a blocking call, but it is not working as I expected. Here is my sample:
descr
Wait function will hold execution for that particular function, But JavaScript work in async way. So sometime there might be chance your function gets executed before wait function. To understand it better you need to read Promises in angular/protractor.
To get your code working you need to .then(function(){}); (asking function 2 to wait until 1st complete.
browser.wait(function() {
console.log('1 - BeforeEach WAIT');
return true;
}).then(function () {
console.log('2 - BeforeEach after wait');
});