Como encadear funções .then e sucesso de retorno de chamada no Angular.js

Estou tentando encadear funções aninhadas .then e chamar as funções de sucesso, mas a chamada de retorno está chamando na própria inicialização.

//public method fn
function fn(callback) {
//calling the 1st API request
fn1()
  .then(function(response) {
    //2nd API request function
    call1(response);
  }, function(error) {
    return $q.reject({
    responseStatus: error.status
  });

  })
  // Returning response
  .then(function(response) {
    callback({
    responseStatus: 200
    });
  }, function(error) {
    callback({
      responseStatus: 500
    });
  });
}

function call1(response) {
  //2nd API
  fn2()
    .then(function(response) {
     //3rd API request function
        call2(response);
      }, function(error) {
        return $q.reject({
        responseStatus: error.status
      });
    });
}


function call2(response) {
  //3rd API request 
  fn3()
    .then(function(response) {
        return lastfunction();
      //here i need to callback the success  response status
      }, function(error) {
        return $q.reject({
        responseStatus: error.status
      });
    });
}


function fn1(){
 //some code 
 }
function fn2(){
//some code 
}
function fn3(){
//some code 
}

//Controller

//i will show response status callback here

if(response.status ==200){
  show output;
 }
 else{
  //response 500
  show errors;
  }

Basicamente, eu preciso retornar o status de resposta "200" para outro controlador em todas as chamadas de serviço com êxito e, mesmo se uma solicitação falhar, preciso enviar "500". com o meu código, 'status de resposta' 200 'está chamando com a primeira função .then. Eu quero chamar esse serviço de chamadas como que

Qualquer ajuda seria apreciada.

questionAnswers(2)

yourAnswerToTheQuestion