Cómo implementar el Validador asíncrono personalizado en Angular2 / 4/5

1) ¿Ya es compatible con Angular? veresta Tema abierto

2) Si es así, entonces, ¿qué está mal en el siguiente código?

export class someClass{

    myForm:ControlGroup;

    constructor(public http:Http, public formBuilder:FormBuilder)
       this.myForm = formBuilder.group({
            ImageId: ["", Validators.required, this.asynValidator]
    });

    asyncValidator(control: Control): {[key: string]: any} {

        return new Promise (resolve => {

          let headers = new Headers();
          headers.append('Content-Type', 'application/json');

          this.http.get('http://localhost/ImageIdValidate?id='+ control.value, {headers:headers})
                .map(res => res.json())
                .subscribe(data => {
                    console.log(data);
                    if(data != null) {
                        resolve({"duplicate": true})
                    }
                    else resolve(null);      
                })
            });
        });
      }
    }

Ni siquiera hace una solicitud de servidor.

Respuestas a la pregunta(3)

Su respuesta a la pregunta