docs: function (next) {  // next can be a function or another thenable
               if (typeof(next.then) === 'function')  // thenable?
                 return next
               // next is a function, so call it
               var nextResult = next.apply (next, result)
               if (nextResult && typeof(nextResult.then) !== 'undefined')  // thenable?
                 return nextResult
               // create a Promise-like wrapper for the result
               return syncPromiseResolve (nextResult)
             }