add streaming support to promise library

started a new refactor of the library