Correct me if I'm wrong, but I think you can avoid this by doing:
thingToUseLater.catch(() => {})
And just ignoring the result of .catch(). Promises are reusable so thingToUseLater can be waited on later when you want to block for it.
Thanks for thoughts on this. I use promises a lot but this is an edge case I hadn't thought about. They are really pretty handy for build scripts since they make your dependencies explicit.