I like that these are handled async now, but I think that we should put these callbacks on the prototype and just bind the function context in order to make this constructor a bit simpler.