It is easier to illustrate this via examples. Your first case:
const fn = (text) => {console.log(text)}
const waiter = () => new Promise((resolve, reject) => {
  return setTimeout(() => {
    fn('resolved')
    resolve()
  }, 2000)
})
waiter().then(fn('done'))
 
 
Notice that fn got executed first, got evaluated and then the waiter got executed. 
Lets look at the 2nd case:
const fn = (text) => {console.log(text)}
const waiter = () => new Promise((resolve, reject) => {
  return setTimeout(() => {
    fn('resolved')
    resolve()
  }, 2000)
})
waiter().then(() => fn('done'))
 
 
Notice now that we got resolved first and then done. 
So the answer to your question is yes in both cases we will wait and execute the someFunc or in the above example the waiter.
The main difference really is when does your dosomethingafter get executed. 
In the first case it is right away and then it is passed in the waiter. 
In the second case you have a valid promise chain which will first be executed and then once done (and since fn acts as the function handler of the then) it will execute  dosomethingafter.