Hi Christian,

This is great. I particularly like the way errors in the async execution are captured:

declare function local:result($id){
try{
  map{ "result":async:result($id)
  }
} catch * {
   map{ "error": map {
          'code': $err:code,
          'description': $err:description,
          'module': $err:module,
          'line': $err:line-number,
          'column': $err:column-number,
          'value': $err:value
  }
 }
}
};
async:ids()!local:result(.)

I see async:update is marked as an updating function.Is this correct as it also returns a result? I would have thought it causes an update later but it is not itself updating. This causes problems as the query id can not be captured or suppressed from the output.

/Andy



On 1 March 2016 at 16:09, Christian Grün <christian.gruen@gmail.com> wrote:
Hi everyone,

As some of you know, James Wright has presented his excellent work on
the Promise Module in Prague [1,2].

The promise:fork-join function is now part of BaseX, along with some
additional functions for asynchronous query processing [3,4].

Your feedback is welcome as usual,
Christian

[1] https://github.com/james-jw/xq-promise/
[2] http://archive.xmlprague.cz/2016/files/xmlprague-2016-proceedings.pdf
[3] http://docs.basex.org/wiki/Async_Module
[4] http://files.basex.org/releases/latest/