ECONNRESET error while execute firebase function

Multi tool use
I made some function to send a notification email to over 20 managers' email address for every 5min using firebase function.
I used scheduled triggering ( to call checkNotices function ) with cron job. It's not a problem.
When cron job engine called checkNotices function, sometimes I got an errors like below.
{ Error: read ECONNRESET
at exports._errnoException (util.js:1020:11)
at TLSWrap.onread (net.js:580:26)
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
config:
adapter: [Function: httpAdapter],
transformRequest: '0': [Function: transformRequest] ,
transformResponse: '0': [Function: transformResponse] ,
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
validateStatus: [Function: validateStatus],
headers:
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'axios/0.16.2',
'Content-Length': 41877 ,
method: 'post',
url: 'https://us-central1-firebase-sending-mail-t3Bd3.cloudfunctions.net/sendingMail/',
data:
...
(something something..)
But sometimes it works well,
it makes me more confused.
Here is some part of code snippets related function.
const axios = require('axios');
const functions = require('firebase-functions');
const admin = require('firebase-admin');
exports.checkNotices = functions.https.onRequest((request, response) =>
const database = admin.database();
const date = new Date();
// const hours = date.getHours();
const timestamp = date.getTime();
const oneDay = 1 * 1000 * 60 * 60 * 23;
const timeZone = commonHelpers.getTimeZoneForNotifications(); // it returns like +2, -7, etc.
database.ref('clubs').orderByChild('timeZone').equalTo(timeZone).once('value')
.then((clubsData) =>
let clubs = clubsData ? clubsData.val() : null;
if (clubs)
clubs = commonHelpers.idConvertor(clubs);
clubs = clubs.filter((club) => (timestamp > (club.lastCheckDate + oneDay))));
);
const processClubPromises = clubs.map((club) =>
return processClubPromise(club, database);
);
return Promise.all(processClubPromises);
else
console.log(`empty clubs for timezone $timeZone`);
Promise.resolve();
)
.then(() =>
response.send('ok');
)
.catch((err) =>
console.error('error:', err);
response.send(err);
);
);
function processClubPromise(club, database)
let liveMessages = ;
let mgr = null;
return database.ref(`mgrs/$club.mgrId`).once('value')
.then((mgrData) =>
mgr = mgrData ? mgrData.val() : null;
if (mgr)
return database.ref('messages').orderByChild('statusFilter').equalTo(`$club._id_active`).once('value');
else
Promise.resolve();
)
.then((liveMessagesData) =>
liveMessages = liveMessagesData ? liveMessagesData.val() : null;
if (liveMessages)
const getPausedMessagesPromises = liveMessages.map((activemessage) =>
const clubNotice = commonHelpers.clubNoticeConvertor(club, mgr, activemessage);
return processGetPausedMessages(clubNotice, club);
);
return Promise.all(getPausedMessagesPromises);
else
Promise.resolve();
)
.then((listOfUnreadedmessages) =>
if (listOfUnreadedmessages)
const content = emailHelpers.getclubNoticeEmailContent(listOfUnreadedmessages);
if (content && content.contentLength > 0)
const params =
fromEmail: EMAIL_SENDER,
fromEmailName: 'Statistics email',
replyTo: EMAIL_SENDER,
toEmail: club.email,
subject: `Here is notification`,
content: content.contentText,
;
const url = `$HOST/sendingMail/`;
return axios.post(url, qs.stringify(params)).catch((err) =>
console.error('err in axios', err, url);
);
else
Promise.resolve();
else
Promise.resolve();
)
.then(() =>
return database.ref().update(
[`clubs/$club._id/lastCheckDate`]: new Date().getTime(),
);
);
function processGetPausedMessages(clubEmailNotice, club)
const
userId,
userName,
= clubEmailNotice;
return new Promise((resolve, reject) =>
return smoochAccount.appUsers.getMessages(club.appId, userId)
.then((message) =>
const messages = commonHelpers.parseMessages(message, userName);
const userMessages = messages.filter((message) =>
return message.role === 'appUser';
);
const message = userMessages[userMessages.length - 1];
if (message)
resolve(notice: clubEmailNotice, message);
else
resolve();
)
.catch((err) =>
reject(err);
);
);
exports.sendingMail = functions.https.onRequest((request, response) =>
cors(request, response, () =>
const replyToName = request.body;
const fromEmail = new sendgridMailHelper.Email(request.body.fromEmail, request.body.fromEmailName);
const replyTo = replyToName ? new sendgridMailHelper.Email(request.body.replyTo, replyToName) : new sendgridMailHelper.Email(request.body.replyTo);
const toEmail = new sendgridMailHelper.Email(request.body.toEmail);
const ccEmail = request.body.ccEmail;
const subject = request.body.subject;
const content = new sendgridMailHelper.Content('text/html', request.body.content);
const mail = new sendgridMailHelper.Mail(fromEmail, subject, toEmail, content);
mail.setReplyTo(replyTo);
const sendgridRequest = sg.emptyRequest(
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON(),
);
return sg.API(sendgridRequest).then(() =>
response.send('ok');
, (err) =>
response.send(err);
);
);
);
Someone said promise is not closed properly, however if it is true why sometimes works well?
Thank you for any advice. I've spent so much time with this.
Please save my life. :/
node.js firebase google-cloud-functions axios
add a comment |
I made some function to send a notification email to over 20 managers' email address for every 5min using firebase function.
I used scheduled triggering ( to call checkNotices function ) with cron job. It's not a problem.
When cron job engine called checkNotices function, sometimes I got an errors like below.
{ Error: read ECONNRESET
at exports._errnoException (util.js:1020:11)
at TLSWrap.onread (net.js:580:26)
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
config:
adapter: [Function: httpAdapter],
transformRequest: '0': [Function: transformRequest] ,
transformResponse: '0': [Function: transformResponse] ,
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
validateStatus: [Function: validateStatus],
headers:
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'axios/0.16.2',
'Content-Length': 41877 ,
method: 'post',
url: 'https://us-central1-firebase-sending-mail-t3Bd3.cloudfunctions.net/sendingMail/',
data:
...
(something something..)
But sometimes it works well,
it makes me more confused.
Here is some part of code snippets related function.
const axios = require('axios');
const functions = require('firebase-functions');
const admin = require('firebase-admin');
exports.checkNotices = functions.https.onRequest((request, response) =>
const database = admin.database();
const date = new Date();
// const hours = date.getHours();
const timestamp = date.getTime();
const oneDay = 1 * 1000 * 60 * 60 * 23;
const timeZone = commonHelpers.getTimeZoneForNotifications(); // it returns like +2, -7, etc.
database.ref('clubs').orderByChild('timeZone').equalTo(timeZone).once('value')
.then((clubsData) =>
let clubs = clubsData ? clubsData.val() : null;
if (clubs)
clubs = commonHelpers.idConvertor(clubs);
clubs = clubs.filter((club) => (timestamp > (club.lastCheckDate + oneDay))));
);
const processClubPromises = clubs.map((club) =>
return processClubPromise(club, database);
);
return Promise.all(processClubPromises);
else
console.log(`empty clubs for timezone $timeZone`);
Promise.resolve();
)
.then(() =>
response.send('ok');
)
.catch((err) =>
console.error('error:', err);
response.send(err);
);
);
function processClubPromise(club, database)
let liveMessages = ;
let mgr = null;
return database.ref(`mgrs/$club.mgrId`).once('value')
.then((mgrData) =>
mgr = mgrData ? mgrData.val() : null;
if (mgr)
return database.ref('messages').orderByChild('statusFilter').equalTo(`$club._id_active`).once('value');
else
Promise.resolve();
)
.then((liveMessagesData) =>
liveMessages = liveMessagesData ? liveMessagesData.val() : null;
if (liveMessages)
const getPausedMessagesPromises = liveMessages.map((activemessage) =>
const clubNotice = commonHelpers.clubNoticeConvertor(club, mgr, activemessage);
return processGetPausedMessages(clubNotice, club);
);
return Promise.all(getPausedMessagesPromises);
else
Promise.resolve();
)
.then((listOfUnreadedmessages) =>
if (listOfUnreadedmessages)
const content = emailHelpers.getclubNoticeEmailContent(listOfUnreadedmessages);
if (content && content.contentLength > 0)
const params =
fromEmail: EMAIL_SENDER,
fromEmailName: 'Statistics email',
replyTo: EMAIL_SENDER,
toEmail: club.email,
subject: `Here is notification`,
content: content.contentText,
;
const url = `$HOST/sendingMail/`;
return axios.post(url, qs.stringify(params)).catch((err) =>
console.error('err in axios', err, url);
);
else
Promise.resolve();
else
Promise.resolve();
)
.then(() =>
return database.ref().update(
[`clubs/$club._id/lastCheckDate`]: new Date().getTime(),
);
);
function processGetPausedMessages(clubEmailNotice, club)
const
userId,
userName,
= clubEmailNotice;
return new Promise((resolve, reject) =>
return smoochAccount.appUsers.getMessages(club.appId, userId)
.then((message) =>
const messages = commonHelpers.parseMessages(message, userName);
const userMessages = messages.filter((message) =>
return message.role === 'appUser';
);
const message = userMessages[userMessages.length - 1];
if (message)
resolve(notice: clubEmailNotice, message);
else
resolve();
)
.catch((err) =>
reject(err);
);
);
exports.sendingMail = functions.https.onRequest((request, response) =>
cors(request, response, () =>
const replyToName = request.body;
const fromEmail = new sendgridMailHelper.Email(request.body.fromEmail, request.body.fromEmailName);
const replyTo = replyToName ? new sendgridMailHelper.Email(request.body.replyTo, replyToName) : new sendgridMailHelper.Email(request.body.replyTo);
const toEmail = new sendgridMailHelper.Email(request.body.toEmail);
const ccEmail = request.body.ccEmail;
const subject = request.body.subject;
const content = new sendgridMailHelper.Content('text/html', request.body.content);
const mail = new sendgridMailHelper.Mail(fromEmail, subject, toEmail, content);
mail.setReplyTo(replyTo);
const sendgridRequest = sg.emptyRequest(
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON(),
);
return sg.API(sendgridRequest).then(() =>
response.send('ok');
, (err) =>
response.send(err);
);
);
);
Someone said promise is not closed properly, however if it is true why sometimes works well?
Thank you for any advice. I've spent so much time with this.
Please save my life. :/
node.js firebase google-cloud-functions axios
add a comment |
I made some function to send a notification email to over 20 managers' email address for every 5min using firebase function.
I used scheduled triggering ( to call checkNotices function ) with cron job. It's not a problem.
When cron job engine called checkNotices function, sometimes I got an errors like below.
{ Error: read ECONNRESET
at exports._errnoException (util.js:1020:11)
at TLSWrap.onread (net.js:580:26)
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
config:
adapter: [Function: httpAdapter],
transformRequest: '0': [Function: transformRequest] ,
transformResponse: '0': [Function: transformResponse] ,
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
validateStatus: [Function: validateStatus],
headers:
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'axios/0.16.2',
'Content-Length': 41877 ,
method: 'post',
url: 'https://us-central1-firebase-sending-mail-t3Bd3.cloudfunctions.net/sendingMail/',
data:
...
(something something..)
But sometimes it works well,
it makes me more confused.
Here is some part of code snippets related function.
const axios = require('axios');
const functions = require('firebase-functions');
const admin = require('firebase-admin');
exports.checkNotices = functions.https.onRequest((request, response) =>
const database = admin.database();
const date = new Date();
// const hours = date.getHours();
const timestamp = date.getTime();
const oneDay = 1 * 1000 * 60 * 60 * 23;
const timeZone = commonHelpers.getTimeZoneForNotifications(); // it returns like +2, -7, etc.
database.ref('clubs').orderByChild('timeZone').equalTo(timeZone).once('value')
.then((clubsData) =>
let clubs = clubsData ? clubsData.val() : null;
if (clubs)
clubs = commonHelpers.idConvertor(clubs);
clubs = clubs.filter((club) => (timestamp > (club.lastCheckDate + oneDay))));
);
const processClubPromises = clubs.map((club) =>
return processClubPromise(club, database);
);
return Promise.all(processClubPromises);
else
console.log(`empty clubs for timezone $timeZone`);
Promise.resolve();
)
.then(() =>
response.send('ok');
)
.catch((err) =>
console.error('error:', err);
response.send(err);
);
);
function processClubPromise(club, database)
let liveMessages = ;
let mgr = null;
return database.ref(`mgrs/$club.mgrId`).once('value')
.then((mgrData) =>
mgr = mgrData ? mgrData.val() : null;
if (mgr)
return database.ref('messages').orderByChild('statusFilter').equalTo(`$club._id_active`).once('value');
else
Promise.resolve();
)
.then((liveMessagesData) =>
liveMessages = liveMessagesData ? liveMessagesData.val() : null;
if (liveMessages)
const getPausedMessagesPromises = liveMessages.map((activemessage) =>
const clubNotice = commonHelpers.clubNoticeConvertor(club, mgr, activemessage);
return processGetPausedMessages(clubNotice, club);
);
return Promise.all(getPausedMessagesPromises);
else
Promise.resolve();
)
.then((listOfUnreadedmessages) =>
if (listOfUnreadedmessages)
const content = emailHelpers.getclubNoticeEmailContent(listOfUnreadedmessages);
if (content && content.contentLength > 0)
const params =
fromEmail: EMAIL_SENDER,
fromEmailName: 'Statistics email',
replyTo: EMAIL_SENDER,
toEmail: club.email,
subject: `Here is notification`,
content: content.contentText,
;
const url = `$HOST/sendingMail/`;
return axios.post(url, qs.stringify(params)).catch((err) =>
console.error('err in axios', err, url);
);
else
Promise.resolve();
else
Promise.resolve();
)
.then(() =>
return database.ref().update(
[`clubs/$club._id/lastCheckDate`]: new Date().getTime(),
);
);
function processGetPausedMessages(clubEmailNotice, club)
const
userId,
userName,
= clubEmailNotice;
return new Promise((resolve, reject) =>
return smoochAccount.appUsers.getMessages(club.appId, userId)
.then((message) =>
const messages = commonHelpers.parseMessages(message, userName);
const userMessages = messages.filter((message) =>
return message.role === 'appUser';
);
const message = userMessages[userMessages.length - 1];
if (message)
resolve(notice: clubEmailNotice, message);
else
resolve();
)
.catch((err) =>
reject(err);
);
);
exports.sendingMail = functions.https.onRequest((request, response) =>
cors(request, response, () =>
const replyToName = request.body;
const fromEmail = new sendgridMailHelper.Email(request.body.fromEmail, request.body.fromEmailName);
const replyTo = replyToName ? new sendgridMailHelper.Email(request.body.replyTo, replyToName) : new sendgridMailHelper.Email(request.body.replyTo);
const toEmail = new sendgridMailHelper.Email(request.body.toEmail);
const ccEmail = request.body.ccEmail;
const subject = request.body.subject;
const content = new sendgridMailHelper.Content('text/html', request.body.content);
const mail = new sendgridMailHelper.Mail(fromEmail, subject, toEmail, content);
mail.setReplyTo(replyTo);
const sendgridRequest = sg.emptyRequest(
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON(),
);
return sg.API(sendgridRequest).then(() =>
response.send('ok');
, (err) =>
response.send(err);
);
);
);
Someone said promise is not closed properly, however if it is true why sometimes works well?
Thank you for any advice. I've spent so much time with this.
Please save my life. :/
node.js firebase google-cloud-functions axios
I made some function to send a notification email to over 20 managers' email address for every 5min using firebase function.
I used scheduled triggering ( to call checkNotices function ) with cron job. It's not a problem.
When cron job engine called checkNotices function, sometimes I got an errors like below.
{ Error: read ECONNRESET
at exports._errnoException (util.js:1020:11)
at TLSWrap.onread (net.js:580:26)
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
config:
adapter: [Function: httpAdapter],
transformRequest: '0': [Function: transformRequest] ,
transformResponse: '0': [Function: transformResponse] ,
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
validateStatus: [Function: validateStatus],
headers:
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'axios/0.16.2',
'Content-Length': 41877 ,
method: 'post',
url: 'https://us-central1-firebase-sending-mail-t3Bd3.cloudfunctions.net/sendingMail/',
data:
...
(something something..)
But sometimes it works well,
it makes me more confused.
Here is some part of code snippets related function.
const axios = require('axios');
const functions = require('firebase-functions');
const admin = require('firebase-admin');
exports.checkNotices = functions.https.onRequest((request, response) =>
const database = admin.database();
const date = new Date();
// const hours = date.getHours();
const timestamp = date.getTime();
const oneDay = 1 * 1000 * 60 * 60 * 23;
const timeZone = commonHelpers.getTimeZoneForNotifications(); // it returns like +2, -7, etc.
database.ref('clubs').orderByChild('timeZone').equalTo(timeZone).once('value')
.then((clubsData) =>
let clubs = clubsData ? clubsData.val() : null;
if (clubs)
clubs = commonHelpers.idConvertor(clubs);
clubs = clubs.filter((club) => (timestamp > (club.lastCheckDate + oneDay))));
);
const processClubPromises = clubs.map((club) =>
return processClubPromise(club, database);
);
return Promise.all(processClubPromises);
else
console.log(`empty clubs for timezone $timeZone`);
Promise.resolve();
)
.then(() =>
response.send('ok');
)
.catch((err) =>
console.error('error:', err);
response.send(err);
);
);
function processClubPromise(club, database)
let liveMessages = ;
let mgr = null;
return database.ref(`mgrs/$club.mgrId`).once('value')
.then((mgrData) =>
mgr = mgrData ? mgrData.val() : null;
if (mgr)
return database.ref('messages').orderByChild('statusFilter').equalTo(`$club._id_active`).once('value');
else
Promise.resolve();
)
.then((liveMessagesData) =>
liveMessages = liveMessagesData ? liveMessagesData.val() : null;
if (liveMessages)
const getPausedMessagesPromises = liveMessages.map((activemessage) =>
const clubNotice = commonHelpers.clubNoticeConvertor(club, mgr, activemessage);
return processGetPausedMessages(clubNotice, club);
);
return Promise.all(getPausedMessagesPromises);
else
Promise.resolve();
)
.then((listOfUnreadedmessages) =>
if (listOfUnreadedmessages)
const content = emailHelpers.getclubNoticeEmailContent(listOfUnreadedmessages);
if (content && content.contentLength > 0)
const params =
fromEmail: EMAIL_SENDER,
fromEmailName: 'Statistics email',
replyTo: EMAIL_SENDER,
toEmail: club.email,
subject: `Here is notification`,
content: content.contentText,
;
const url = `$HOST/sendingMail/`;
return axios.post(url, qs.stringify(params)).catch((err) =>
console.error('err in axios', err, url);
);
else
Promise.resolve();
else
Promise.resolve();
)
.then(() =>
return database.ref().update(
[`clubs/$club._id/lastCheckDate`]: new Date().getTime(),
);
);
function processGetPausedMessages(clubEmailNotice, club)
const
userId,
userName,
= clubEmailNotice;
return new Promise((resolve, reject) =>
return smoochAccount.appUsers.getMessages(club.appId, userId)
.then((message) =>
const messages = commonHelpers.parseMessages(message, userName);
const userMessages = messages.filter((message) =>
return message.role === 'appUser';
);
const message = userMessages[userMessages.length - 1];
if (message)
resolve(notice: clubEmailNotice, message);
else
resolve();
)
.catch((err) =>
reject(err);
);
);
exports.sendingMail = functions.https.onRequest((request, response) =>
cors(request, response, () =>
const replyToName = request.body;
const fromEmail = new sendgridMailHelper.Email(request.body.fromEmail, request.body.fromEmailName);
const replyTo = replyToName ? new sendgridMailHelper.Email(request.body.replyTo, replyToName) : new sendgridMailHelper.Email(request.body.replyTo);
const toEmail = new sendgridMailHelper.Email(request.body.toEmail);
const ccEmail = request.body.ccEmail;
const subject = request.body.subject;
const content = new sendgridMailHelper.Content('text/html', request.body.content);
const mail = new sendgridMailHelper.Mail(fromEmail, subject, toEmail, content);
mail.setReplyTo(replyTo);
const sendgridRequest = sg.emptyRequest(
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON(),
);
return sg.API(sendgridRequest).then(() =>
response.send('ok');
, (err) =>
response.send(err);
);
);
);
Someone said promise is not closed properly, however if it is true why sometimes works well?
Thank you for any advice. I've spent so much time with this.
Please save my life. :/
node.js firebase google-cloud-functions axios
node.js firebase google-cloud-functions axios
edited Nov 14 '18 at 8:01


Doug Stevenson
78.9k994112
78.9k994112
asked Nov 14 '18 at 7:56


Woojin JeongWoojin Jeong
274
274
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53295390%2feconnreset-error-while-execute-firebase-function%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53295390%2feconnreset-error-while-execute-firebase-function%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
xa1Ptj,ell,LUCh59F2gbwGzwGIwOGIwGQrPGPYskxN7kpljsYyWlwBgZJ4 w3 C gVP9J2vqjUUT