bot18
Version:
A high-frequency cryptocurrency trading bot by Zenbot creator @carlos8f
42 lines (35 loc) • 913 B
JavaScript
const retry = require('retry');
class AbortError extends Error {
constructor(message) {
super(message);
if (message instanceof Error) {
this.originalError = message;
message = message.message;
} else {
this.originalError = new Error(message);
this.originalError.stack = this.stack;
}
this.name = 'AbortError';
this.message = message;
}
}
module.exports = (input, opts) => new Promise((resolve, reject) => {
const operation = retry.operation(opts);
operation.attempt(attempts => {
Promise.resolve(attempts)
.then(input)
.then(resolve, err => {
if (err instanceof AbortError) {
operation.stop();
reject(err.originalError);
} else if (err instanceof TypeError) {
operation.stop();
reject(err);
} else if (!operation.retry(err)) {
reject(operation.mainError());
}
});
});
});
module.exports.AbortError = AbortError;
;