seems like in case of exception, callback will be executed more than once, not sure if that is desirable or not..