<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">2013/8/1 Mark S. Miller <span dir="ltr"><<a href="mailto:erights@google.com" target="_blank">erights@google.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr">On the input side of .then and .flatMap, no.<div>On the output side of both .then and .flatMap, depending on what you mean by "branding", yes. If .flatMap's callback returns a non-promise the promise it already returned gets rejected. If .then's callback returns a non-promise, the promise it already returned accepts that non-promise.</div>


</div><div class="gmail_extra"><br></div></blockquote><div>That's why I included assimilation in the mix. If then() deep flattens promises there's no difference with assimilation of thenables. Only flatMap() could need to know if something is a "true promise" or not, and even then it could still be more useful for flatMap() to duck type (composition with other flatMappable objects).</div>

</div></div></div>