code: function passThreadControl (psid, target_app_id, metadata) {  
    return new Promise (async (resolve, reject) => {
      if (!target_app_id) {
        reject('target_app_id required');
      } else if (target_app_id === 'page_inbox') {
        target_app_id = 263902037430900;
      }
  
      if (!psid) {
        reject('PSID required to identify the thread to enact handover for');
      }
      
  
      let payload = {
        'recipient': {
          'id': psid
        },
        'target_app_id': target_app_id
      };
  
      if (metadata) {
        payload.metadata = metadata
      }
  
      try {
        let request_options = {
          'path': '/me/pass_thread_control',
          'payload': payload
        };
  
        let response = await this.sendGraphRequest(request_options);
        resolve(response);
      } catch (e) {
        reject(e);
      }
    });
  }
docs: Initiates a new handover protocol [pass thread control](https://developers.facebook.com/docs/messenger-platform/handover-protocol/pass-thread-control) event.
  @param  {Integer}  psid  The PSID of the user whose thread you want to initiate the pass thread control event for.
  @param  {Integer}  target_app_id   _Optional._ The app ID of the app to pass thread control to. Set to `page_inbox` to pass thread control to the Page Inbox.
  @param  {String}   metadata   _Optional._ An arbitrary string that will be delivered to the target app with the `messaging_handovers` webhook event.
  @return {Promise}  The API response
  @memberof  Client#
  @example
  let psid = 1008372609250235,
  target_app_id = 1719933432123212,
  metadata = 'I passed control to you'; // optional
  Client.passThreadControl(psid, target_app_id, metadata)
  .then(res => {
  console.log(res); // {'success': true}
  });