Netherworld's Pretend Minibar

    async-forward

    1.0.0 • Public • Published

    async-forward

    Forward methods to asynchronously acquired objects.

    Examples

    Specify the method names you want to forward, and provide a callback for getting the object that should receive forwarded method calls.

    var assert = require('assert')
    var forward = require('./')
     
    var methods = ['doSomethingAsync']
    var proxy = forward(['double'], getSlowDoubler)
     
    proxy.double(4, function (err, result) {
      assert.equal(8, result)
      console.log('ok - async method works')
    })

    The getSlowDoubler function looks like this, but it could be any sort of async function, as long as it returns an object with the expected methods:

    function getSlowDoubler (callback) {
      var service = {
        double: function (n, callback) {
          setTimeout(function () {
            callback(null, n * 2)
          }, 100)
        }
      }
     
      // return the service asynchronously via callback
      process.nextTick(function () {
        callback(null, service)
      })
    }

    Any errors that occur while getting the method receiver will be forwarded to the callback:

    function throwsAnError (callback) {
      throw new Error('whoops')
    }
     
    var proxy = forward(['myMethod'], throwsAnError)
     
    proxy.myMethod(function (err) {
      assert.equal('whoops', err.message)
      console.log('ok - got expected error')
    })

    The same behaviour will work for errors that are returned via callback or thrown when invoking the method.

    License

    MIT

    Install

    npm i async-forward

    DownloadsWeekly Downloads

    0

    Version

    1.0.0

    License

    MIT

    Last publish

    Collaborators

    • grncdr