Search code examples
node.jspromisenock

How to make node throw an error for UnhandledPromiseRejectionWarning


I'm using nock.back to mock out some API calls. When unexpected calls are made, UnhandledPromiseRejectionWarning gets printed to the console, but my tests pass, and those warnings are easily missed in the rest of the console output. I want an exception thrown instead of a silent error. How do I do this?


Solution

  • The way I use promises is:

    function myFunction(){
       return new Promise((resolve, reject) -> {
           try {
               // Logic
               resolve(logic)
           } catch(e) {
               reject('Provide your error message here -> ' + e)
           }
       })
    }
    

    Or !

    function myFunction().then( // Calls the function defined previously
        logic => { // Instead of logic you can write any other suitable variable name for success
            console.log('Success case')     
        }, 
        error => {
            console.log('myFunction() returned an error: ' + error)
        }
    )
    

    UPD

    Have you had a look here? https://nodejs.org/api/process.html#process_event_unhandledrejection It describes an unhandledRejection event being emitted when you have no catch for a rejection from a Promise and provides the code to catch the WARNING and output it nicely to console.

    (copy paste)

    process.on('unhandledRejection', (reason, p) => {
       console.log('Unhandled Rejection at:', p, 'reason:', reason);
       // application specific logging, throwing an error, or other logic here
    });
    

    Node.js runs on a single process.