try/catch detect the error itself and transfer control to catch part. this syntax exists in
then/catch, you must notify occurring an error yourself (with calling
reject). This means you can notify
error when you recognize an error is occurred. that error can be a real or not real error (programming/logical error).