Yes of course you could have Promises that never resolve. here you have a Promise that never resolve.
const promiseThatNeverResolve = new Promise((resolve, reject) => {})
Though, they are implementation errors... in general asynchronous activities have some timeout to take a determination of the resolution or rejection of the promise.
In any case, I think it has some merit to do the test of the scenario you were mentioning and see what is happening and reason about it.
If you execute the code below and put your laptop to sleep for less than 50 seconds and then awake it. You will see that the Promise resolve OK showing "finished OK". Laptop was able to save the current state of the memory before going to sleep and when was awaken to restart with the same state. This means Promise was saved in Pending state and recover in Pending state. Same thing for node event loop, processes and so on.
But even more... it would work if you wait for more than 60 seconds. The laptop awakes with the same state of event loop, stack and so on (that had before going to sleep), like a time machine that freezes the time and resume it as it no time has passed... so resolve function is still scheduled to be executed. And Promise will still be pending. Then, due to the implementation of setTimeout, it will call the resolve function, at least one, no matter how much time would have passed. If the implementation would have decided to throw an exception then Promise will be rejected and you will see the log of the catch().
It is interesting to observe that after awakening the laptop for more than 60 seconds, it took another 10 seconds to show the successful result... Probably while restoring the internal memory state.
const myProm = new Promise((resolve, reject) => {
setTimeout(resolve, 50000)
})
myProm.then(()=>console.log('finished OK')).catch(()=>console.log('failed'))