diff --git a/lauxlib.c b/lauxlib.c
index 53b8c9b..78dfb4e 100644
--- a/lauxlib.c
+++ b/lauxlib.c
@@ -290,49 +290,6 @@
 /* }====================================================== */
 
 
-/*
-** {======================================================
-** 'luaL_resourcetryagain'
-** This function uses 'errno' to check whether the last error was
-** related to lack of resources (e.g., not enough memory or too many
-** open files).  If so, the function performs a full garbage collection
-** to try to release resources, and then it returns 1 to signal to
-** the caller that it is worth trying again the failed operation.
-** Otherwise, it returns 0.  Because error codes are not ANSI C, the
-** code must handle any combination of error codes that are defined.
-** =======================================================
-*/
-
-LUALIB_API int luaL_resourcetryagain (lua_State *L) {
-
-/* these are the resource-related errors in Linux */
-#if defined(EMFILE) || defined(ENFILE) || defined(ENOMEM)
-
-#if !defined(EMFILE)	/* too many open files in the process */
-#define EMFILE		-1	/* if not defined, use an impossible value */
-#endif
-
-#if !defined(ENFILE)	/* too many open files in the system */
-#define ENFILE		-1
-#endif
-
-#if !defined(ENOMEM)	/* not enough memory */
-#define ENOMEM		-1
-#endif
-
-  if (errno == EMFILE || errno == ENFILE || errno == ENOMEM) {
-    lua_gc(L, LUA_GCCOLLECT);  /* try to release resources with a full GC */
-    return 1;  /* signal to try again the creation */
-  }
-
-#endif
-
-  return 0;  /* else, asume errors are not due to lack of resources */
-
-}
-
-/* }====================================================== */
-
 
 /*
 ** {======================================================
diff --git a/lauxlib.h b/lauxlib.h
index cd4d01e..9ec0f53 100644
--- a/lauxlib.h
+++ b/lauxlib.h
@@ -77,8 +77,6 @@
 LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname);
 LUALIB_API int (luaL_execresult) (lua_State *L, int stat);
 
-LUALIB_API int (luaL_resourcetryagain) (lua_State *L);
-
 
 /* predefined references */
 #define LUA_NOREF       (-2)
diff --git a/liolib.c b/liolib.c
index 5881b02..b2a2fec 100644
--- a/liolib.c
+++ b/liolib.c
@@ -246,22 +246,9 @@
 }
 
 
-/*
-** Equivalent to 'fopen', but if it fails due to a lack of resources
-** (see 'luaL_resourcetryagain'), do an "emergency" garbage collection
-** to try to close some files and then tries to open the file again.
-*/
-static FILE *trytoopen (lua_State *L, const char *path, const char *mode) {
-  FILE *f = fopen(path, mode);
-  if (f == NULL && luaL_resourcetryagain(L))  /* resource failure? */
-    f = fopen(path, mode);  /* try to open again */
-  return f;
-}
-
-
 static void opencheck (lua_State *L, const char *fname, const char *mode) {
   LStream *p = newfile(L);
-  p->f = trytoopen(L, fname, mode);
+  p->f = fopen(fname, mode);
   if (p->f == NULL)
     luaL_error(L, "cannot open file '%s' (%s)", fname, strerror(errno));
 }
@@ -273,7 +260,7 @@
   LStream *p = newfile(L);
   const char *md = mode;  /* to traverse/check mode */
   luaL_argcheck(L, l_checkmode(md), 2, "invalid mode");
-  p->f = trytoopen(L, filename, mode);
+  p->f = fopen(filename, mode);
   return (p->f == NULL) ? luaL_fileresult(L, 0, filename) : 1;
 }
 
@@ -292,8 +279,6 @@
   const char *mode = luaL_optstring(L, 2, "r");
   LStream *p = newprefile(L);
   p->f = l_popen(L, filename, mode);
-  if (p->f == NULL && luaL_resourcetryagain(L))  /* resource failure? */
-    p->f = l_popen(L, filename, mode);  /* try to open again */
   p->closef = &io_pclose;
   return (p->f == NULL) ? luaL_fileresult(L, 0, filename) : 1;
 }
@@ -302,8 +287,6 @@
 static int io_tmpfile (lua_State *L) {
   LStream *p = newfile(L);
   p->f = tmpfile();
-  if (p->f == NULL && luaL_resourcetryagain(L))  /* resource failure? */
-    p->f = tmpfile();  /* try to open again */
   return (p->f == NULL) ? luaL_fileresult(L, 0, NULL) : 1;
 }
 
diff --git a/loslib.c b/loslib.c
index 1962f55..8809e5e 100644
--- a/loslib.c
+++ b/loslib.c
@@ -166,8 +166,6 @@
   char buff[LUA_TMPNAMBUFSIZE];
   int err;
   lua_tmpnam(buff, err);
-  if (err && luaL_resourcetryagain(L))  /* resource failure? */
-    lua_tmpnam(buff, err);  /* try again */
   if (err)
     return luaL_error(L, "unable to generate a unique filename");
   lua_pushstring(L, buff);
diff --git a/manual/manual.of b/manual/manual.of
index d8bac5d..91ba8c4 100644
--- a/manual/manual.of
+++ b/manual/manual.of
@@ -5535,20 +5535,6 @@
 
 }
 
-@APIEntry{int luaL_resourcetryagain (lua_State *L);|
-@apii{0,0,m}
-
-Try to release resources in case of errors.
-This function uses @id{errno} to check whether the last error was
-related to lack of resources (e.g., not enough memory or too many
-open files).
-If so, the function performs a full garbage collection
-to try to release resources, and then it returns 1 to signal to
-the caller that it is worth trying again the failed operation.
-Otherwise, it returns 0.
-
-}
-
 @APIEntry{void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup);|
 @apii{nup,0,m}
 
