Level stream optimizations

Updated the way level streams are handled with promises so that the
handler can be fired twice but promises will only allow one to succeed.
The rest of the data manipulations that was originally in handler was
pulled into a .then after the stream is closed/ended.