Есть такой метод в сервисе:
async send(chainLink, signTransaction) {
try {
const web3 = new Web3(chainLink);
const receipt = await new Promise(async (resolve, reject) => {
await web3.eth
.sendSignedTransaction(signTransaction.rawTransaction)
.on('receipt', (receipt) => {
resolve(receipt);
})
.on('error', (error) => {
reject(error);
});
});
return {
status: true,
data: receipt,
};
} catch (e) {
throw new HttpException(
{
status: false,
message: e.message,
},
HttpStatus.INTERNAL_SERVER_ERROR,
{
cause: e,
},
);
}
}
Периодически там возникает ошибка, что в принципе нормально, только вот когда она возникает, я ее вижу в терминале (где запущен
nest start --watch), а в постмане выскакивает
Error: socket hang up
По логике ошибка должна отлавливаться в catch, и отдаваться как ответ. В чем проблема? Почему catch не срабатывает?
Ошибка, которая выскакивает в терминале:
/Users/mac/Projects/project/node_modules/web3-core-helpers/lib/errors.js:28
var err = new Error('Returned error: ' + message);
^
Error: Returned error: insufficient funds for gas * price + value
at Object.ErrorResponse (/Users/mac/Projects/project/node_modules/web3-core-helpers/lib/errors.js:28:19)
at /Users/mac/Projects/project/node_modules/web3-core-requestmanager/lib/index.js:300:36
at /Users/mac/Projects/project/node_modules/web3-providers-http/lib/index.js:127:13
at processTicksAndRejections (node:internal/process/task_queues:95:5)