because we know it is asynchronous, so just return a promise first! - Jason Yu
this little snippet of comments from this blogpost just made that final click for me!