| 219 | } |
| 220 | |
| 221 | function request (opts, callback) { |
| 222 | if (callback === undefined) { |
| 223 | return new Promise((resolve, reject) => { |
| 224 | request.call(this, opts, (err, data) => { |
| 225 | return err ? reject(err) : resolve(data) |
| 226 | }) |
| 227 | }) |
| 228 | } |
| 229 | |
| 230 | try { |
| 231 | const handler = new RequestHandler(opts, callback) |
| 232 | |
| 233 | this.dispatch(opts, handler) |
| 234 | } catch (err) { |
| 235 | if (typeof callback !== 'function') { |
| 236 | throw err |
| 237 | } |
| 238 | const opaque = opts?.opaque |
| 239 | queueMicrotask(() => callback(err, { opaque })) |
| 240 | } |
| 241 | } |
| 242 | |
| 243 | module.exports = request |
| 244 | module.exports.RequestHandler = RequestHandler |