I think [chrome.runtime.lastError](https://developer.chrome.com/extensions/runtime#property-lastError) will be set if there's an error (and the callback won't be called). Could you test for that and reject the promise if set?