This is fixed in my `promises` branch, please ignore how massively shitty it is!