I am confused by the first point you made here.  How can `promise` be private when it is the primary way that consumer code interacts with this mixing (by providing the promise at create time)?