Member
This fixes a bug where some() never resolves if the input array contains not enough items.
some([1, 2, 3], 4)->then(function() { // Never called });
Member
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The documentation seems to suggest otherwise. IMO it makes sense to reject this with a RangeException, but we should probably also add this special case to the README.
Member Author
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a note the the README ( e29472f ).
Member
README now LGTM :)
However, after further consideration, I think this should probably throw a subclass of LogicException rather than RuntimeException. After all this is in fact a logic error which could be detected at "compile time" (i.e. it does not really depend on a runtime decision). What's your view on this?
Member Author
Good point. I've used RangeException after discovering this bug while looking through the bluebird code and extended the SPL RangeException (which in turn extends RuntimeException).
I think it would be strange to use the name RangeException and extend LogicException because this would differ from the SPL.
Maybe we should use another name...any suggestions?
Contributor
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would UnderflowException or LengthException, both of which extend LogicException, make sense here?
Edit: just realised that UnderflowException extends RuntimeException.
Member Author
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LengthException might be an option...
Member Author
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Renamed to LengthException in cd6bb56 .
jsor
added this to the
v3.0 milestone
jsor
removed this from the
v3.0 milestone
jsor deleted the some-underflow branch
March 30, 2016 07:22Member Author
I think (and iirc we agreed on IRC) that this is a bug fix, because without this fix
some([1, 2, 3], 4) ->then(function() { // Never called }) ->otherwise(function() { // Never called });
simply does nothing. It neither calls the fulfillment nor the rejection handler.