rewritten Promise to allow multiple listeners, and to also respond when
only onError is called. This was the cause for problems in promises not
responding in other projects.
used live now

- fixed stream iterator concurrent access exception by making them
immutable