Made gd.open(source, callback) truly asyncronous