   ordered: false
   outputQ: []
   activateOnInput: true
+  forwardBrackets:
+    in: ['out', 'error']
+  bracketBuffer: {}
 
   constructor: (options) ->
     options = {} unless options

  constructor: (@ports, @ip, @nodeInstance, @port, @result) ->
    @scope = @ip.scope

  activate: ->
    @result.__resolved = false
    if @nodeInstance.ordered
      @nodeInstance.outputQ.push @result

  has: ->
    res = true
    res and= @ports[port].ready @scope for port in arguments
    res

  get: ->
    if @nodeInstance.ordered and
    @nodeInstance.activateOnInput and
    not ('__resolved' of @result)

    for port, packet of outputMap
      @sendIP port, packet

  # Alias for `complete()`
  sendDone: (outputMap) ->
    @complete outputMap

  # Sends the argument via `send()` and marks activation as `done()`
  complete: (outputMap) ->
    @send outputMap
    @done()

  # Makes a map-style component pass a result value to `out`
  # keeping all IP metadata received from `in`,
  # or modifying it if `options` is provided
  pass: (data, options = {}) ->
    unless 'out' of @ports
      throw new Error 'output.pass() requires port "out" to be present'
    for key, val of options
      @ip[key] = val
    @ip.data = data
    @sendIP 'out', @ip
    @done()

  # Finishes process activation gracefully
  done: (error) ->
    @error error if error
    if @nodeInstance.ordered
