docs: function some(promisesOrValues, howMany, onFulfilled, onRejected, onProgress) {
  
              checkCallbacks(2, arguments);
  
              return well(promisesOrValues, function (promisesOrValues) {
  
                  var toResolve, toReject, values, reasons, deferred, fulfillOne, rejectOne, notify, len, i;
  
                  len = promisesOrValues.length >>> 0;
  
                  toResolve = Math.max(0, Math.min(howMany, len));
                  values = [];
  
                  toReject = (len - toResolve) + 1;
                  reasons = [];
  
                  deferred = defer();
  
                  // No items in the input, resolve immediately
                  if (!toResolve) {
                      deferred.resolve(values);
  
                  } else {
                      notify = deferred.notify;
  
                      rejectOne = function (reason) {
                          reasons.push(reason);
                          if (!--toReject) {
                              fulfillOne = rejectOne = noop;
                              deferred.reject(reasons);
                          }
                      };
  
                      fulfillOne = function (val) {
                          // This orders the values based on promise resolution order
                          // Another strategy would be to use the original position of
                          // the corresponding promise.
                          values.push(val);
  
                          if (!--toResolve) {
                              fulfillOne = rejectOne = noop;
                              deferred.resolve(values);
                          }
                      };
  
                      for (i = 0; i < len; ++i) {
                          if (i in promisesOrValues) {
                              well(promisesOrValues[i], fulfiller, rejecter, notify);
                          }
                      }
                  }
  
                  return deferred.promise.then(onFulfilled, onRejected, onProgress);
  
                  function rejecter(reason) {
                      rejectOne(reason);
                  }
  
                  function fulfiller(val) {
                      fulfillOne(val);
                  }
  
              });
          }