Smalltalk createPackage: 'Kernel-Promises'! Object subclass: #Thenable instanceVariableNames: '' package: 'Kernel-Promises'! !Thenable commentStamp! I am the abstract base class for Promises. My subclasses should wrap existing JS implementations. I contain methods that wrap Promises/A+ `.then` behaviour.! !Thenable methodsFor: 'promises'! all: nadicBlock ! catch: aBlock ! on: aClass do: aBlock ! on: aClass do: aBlock catch: anotherBlock ! then: aBlockOrArray < var array = Array.isArray(aBlockOrArray) ? aBlockOrArray : [aBlockOrArray]; return array.reduce(function (soFar, aBlock) { return soFar.then(function (result) { return aBlock._value_(result); }); }, self)> ! ! Thenable subclass: #Promise instanceVariableNames: '' package: 'Kernel-Promises'! !JSObjectProxy methodsFor: '*Kernel-Promises'! all: nadicBlock ! catch: aBlock ! on: aClass do: aBlock ! on: aClass do: aBlock catch: anotherBlock ! then: aBlock ! !