prototypes addPrototype: #Promise derivedFrom: {Cloneable}. Promise addSlot: #process valued: []. prototypes addPrototype: #Vat derivedFrom: {Cloneable}. Vat addSlot: #promises valued: ExtensibleArray newEmpty. v@(Vat traits) newEmpty [| newV | newV: v clone. newV promises: newV promises newEmpty. newV ]. v@(Vat traits) run [ [v promises isEmpty] whileFalse: [| promise | promise: v promises removeLast. promise forwardTo: promise process do ] ]. m@(Method traits) eventually [| newP | newP: Promise clone. newP process: m. currentVat promises addLast: newP. newP ]. globals addSlot: #currentVat valued: Vat newEmpty.