4th argument: extendable component / Do's: thenable/noop promise