Unwrap promises when setting a belongsTo

Still needs several tests for lots of crazy cases.