Simplify code by using Promises in a better way; try_load -> load

I haven't tested this, but I think it should work.
as discussed in gitter, this needs an additional parameter `, $.proxy(Promise.reject, Promise)`